SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
From Web Vulnerability
to Exploit in 15 minutes
Pichaya Morimoto a.k.a. longcat
Code Mania 10
June 27, 2015
★ Impact of a Hacking Incident
★ PHP Object Serialization
★ PHP Magic Method
★ DEMO: Teleport Portal
★ CodeIgniter’s Session Cookie
★ Secure Code Review: POP Gadgets
★ Inspect Requests by BurpSuite
★ Write Exploit Code
○ Python
○ Metasploit
Overview
2 นาที
5 นาที
3 นาที
5 นาที
รวม: 15 นาที
เว็บโดนแฮกแลว?
จะทํายังไงดี
ทุกวันนี้ยังเห็นมีคนใช
AppServ อยู
★ A1 Injection
★ A2 Broken Authentication and Session Management
★ A3 Cross-Site Scripting (XSS)
★ A4 Insecure Direct Object References
...
★ A10 Unvalidated Redirects and Forwards
OWASP Top 10 - 2013
SQL queries, LDAP
queries, XPath queries,
OS commands,
program arguments,
etc.
unserialize(
[User Input Data ]
);
+
Classes: POP Gadgets
POI: PHP Object Injection
PHP Object Serialization
Serialization:
serialize()
Deserialization:
unserialize()
★ $number = 1234;
★ $text = 'codemania';
★ $fruits = array('apple',
'banana',
'orange');
class FooController {
public $foo='bar';
function doX() { ... } }
★ $a = new FooController;
PHP Object Serialization
serialize
([<คา]);
unserialize
([คา>]);
★ $fruits = array('apple',
'banana',
'orange');
PHP Object Serialization
a:3:{i:0;s:5:"apple";i:1;
s:6:"banana";i:2;s:6:"
orange";}
O:13:"FooController":
1:{s:3:"foo";s:3:"
bar";}
class FooController {
public $foo = 'bar';
}
★ $a = new FooController;
serialize
([<คา]);
PHP Object DeSerialization
User Input
$_POST
$_GET
$_COOKIE
$_SERVER
...
class FooController {
public $foo = 'bar';
}
$a = unserialize($_GET['a']);
unserialize
([คา>]);
***?
__construct() __destruct()
__sleep() __wakeup()
__toString()
__call(), __callStatic()
__get(), __set()
...
PHP Magic Method
POP
Gadget
PHP Magic Method
__sleep:
เวลา serialize แลวเอา
ตัวแปรบางตัวออก
__wakeup:
เวลา unserialize แลวเอา
ตัวแปรอื่นมาใสแทน
__destruct:
ถามีขอความเออเรอเก็บไวใ
หแสดงกอนจบการทํางาน
unserialize(
[User Input Data ]
);
+
Classes: POP Gadgets
POI: PHP Object Injection
DEMO: Teleport Portal
Fingerprint WebApp
ci_session
CodeIgniter
ci_session ?
Session Data
(serialized format)
unserialize(
[User Input Data ]
);
+
Classes: POP Gadgets
POI: PHP Object Injection
***?
ci_session ?
Session Data
(serialized format)
MAC / Signature
(MD5)
Create a new session
system/libraries/Session.php
1
2
3
Write the session cookie
4
5
6
system/libraries/Session.php
encryption_key
Encryption Key
★ บางแอพพัฒนาจาก CI แลวคนเอาไปใชไมเปลี่ยน
★ Offline Bruteforce
★ รีวิวโคด / ขโมยโคด
★ ชองโหวอื่นๆ
ไมรู Encryption Key ทําไง
Fetch the current session data
system/libraries/Session.php1
2
3
4
5
unserialize(
[User Input Data ]
);
+
Classes: POP Gadgets
POI: PHP Object Injection
POP Gadgets
__destruct
unserialize(
[User Input Data ]
);
+
Classes: POP Gadgets
POI: PHP Object Injection
PoC
สราง
Object
serialize
แลวก็ตอ key มา
md5 หาคา MAC
URL
Encoding
MAC
PoC
Write an Exploit
1
2
3
4
Write an Exploit
สราง
ci_session
สราง HTTP
Request
ยิง Req
1
2
3
Exploit
Backdoor
WebShell
Beyond: POP Chain
http://syssec.rub.
de/media/emma/veroeffentlichungen/2014/09/10/POPChainGenerati
on-CCS14.pdf
★ อยารับ User Input เขา unserilize() โดยตรง
ใช json_encode(), json_decode() แทน
★ ใช Web Framework ก็ตองอัพเดทเวอรชั่นใหม
★ Encryption Key สําคัญมาก สุมกอนใช
★ คอยอัพเดทเทคนิคการแฮกใหม ๆ
สรุป
เพจ: สอนแฮกเว็บแบบแมวๆ
https://www.facebook.com/longhackz
From Web Vulnerability to Exploit in 15 minutes

Contenu connexe

Plus de Pichaya Morimoto

Securing and Hacking LINE OA Integration
Securing and Hacking LINE OA IntegrationSecuring and Hacking LINE OA Integration
Securing and Hacking LINE OA IntegrationPichaya Morimoto
 
Docker Plugin For DevSecOps
Docker Plugin For DevSecOpsDocker Plugin For DevSecOps
Docker Plugin For DevSecOpsPichaya Morimoto
 
Mysterious Crypto in Android Biometrics
Mysterious Crypto in Android BiometricsMysterious Crypto in Android Biometrics
Mysterious Crypto in Android BiometricsPichaya Morimoto
 
Web Hacking with Object Deserialization
Web Hacking with Object DeserializationWeb Hacking with Object Deserialization
Web Hacking with Object DeserializationPichaya Morimoto
 
Burp Extender API for Penetration Testing
Burp Extender API for Penetration TestingBurp Extender API for Penetration Testing
Burp Extender API for Penetration TestingPichaya Morimoto
 
Bug Bounty แบบแมว ๆ
Bug Bounty แบบแมว ๆ Bug Bounty แบบแมว ๆ
Bug Bounty แบบแมว ๆ Pichaya Morimoto
 
Pentest 101 @ Mahanakorn Network Research Laboratory
Pentest 101 @ Mahanakorn Network Research LaboratoryPentest 101 @ Mahanakorn Network Research Laboratory
Pentest 101 @ Mahanakorn Network Research LaboratoryPichaya Morimoto
 

Plus de Pichaya Morimoto (7)

Securing and Hacking LINE OA Integration
Securing and Hacking LINE OA IntegrationSecuring and Hacking LINE OA Integration
Securing and Hacking LINE OA Integration
 
Docker Plugin For DevSecOps
Docker Plugin For DevSecOpsDocker Plugin For DevSecOps
Docker Plugin For DevSecOps
 
Mysterious Crypto in Android Biometrics
Mysterious Crypto in Android BiometricsMysterious Crypto in Android Biometrics
Mysterious Crypto in Android Biometrics
 
Web Hacking with Object Deserialization
Web Hacking with Object DeserializationWeb Hacking with Object Deserialization
Web Hacking with Object Deserialization
 
Burp Extender API for Penetration Testing
Burp Extender API for Penetration TestingBurp Extender API for Penetration Testing
Burp Extender API for Penetration Testing
 
Bug Bounty แบบแมว ๆ
Bug Bounty แบบแมว ๆ Bug Bounty แบบแมว ๆ
Bug Bounty แบบแมว ๆ
 
Pentest 101 @ Mahanakorn Network Research Laboratory
Pentest 101 @ Mahanakorn Network Research LaboratoryPentest 101 @ Mahanakorn Network Research Laboratory
Pentest 101 @ Mahanakorn Network Research Laboratory
 

From Web Vulnerability to Exploit in 15 minutes