Friday, November 15, 2013

อธิบายช่องโหว่ที่เรียกประมาณว่า "path disclosure"

==========
พวกช่องโหว่ path disclosure (มันมีหลายชื่อเรียกนะ) ความหมายสั้นๆ ก็คือ
บัคที่มีการแสดง error message ต่างๆ นั่นเอง

ซึ่งจากข้อมูล error message ต่างๆ นี้
ก็จะแสดงให้ attacker (หรือ hacker) เห็นพวก username, และ folder ต่างๆ (information)
และนำไปใช้ประโยชน์ในการโจมตี (หรือแฮก) เว็บได้นั่นเอง
เช่น brute force ssh, brute force sql login หรือ หา information ต่างๆ จาก error massage ที่ได้

==========
ยกตัวอย่าง path disclosure จากบัค PMASA-2012-2
(phpmyadmin local path disclosure vulnerability)

bug : https://github.com/phpmyadmin/phpmyadmin/blob/d17fba309c11bcda59d74f238d75a56c543393f0/show_config_errors.php
diff patch : https://github.com/phpmyadmin/phpmyadmin/commit/c51817d3b8cb05ff54dca9373c0667e29b8498d4#diff-623df9196ca4b1c790ac2bece157a712

จะเห็นว่าไฟล์ show_config_errors.php
ได้มีการเรียกใช้ ฟังชั่น "require CONFIG_FILE;" (บรรทัดที่ 17)
ซึ่ง CONFIG_FILE ถูก define ไว้เป็น ./config.inc.php
ซึ่งถ้าเว็บเป้าหมายไม่มีไฟล์ ./config.inc.php
ก็จะทำให้ เปิดไฟล์ไม่ได้ ซึ่งก็จะทำให้เกิด error message ขึ้นมานั่นเอง

เช่น
hxxp://samuiforsale.com/phpmyadmin/show_config_errors.php
hxxp://adsovo.com/phpMyAdmin/show_config_errors.php
hxxp://mekonecology.net/phpmyadmin/show_config_errors.php
hxxp://whatels.net/phpmyadmin/show_config_errors.php

ภาพปลากรอบ

วิธีป้องกัน
- update cms, เว็บ ที่ใช้ให้ เป็น version ใหม่เสมอๆ
- ตรวจเช็ค code ให้ดีๆ (programmer ควรรอบคอบหน่อย)
*เพราะ ผมก็ยังเห็นเว็บ ธนาคาร มี error พวกนี้ อยู่เหมือนกัน
- ปิดการแสดง error message ในเครื่อง product

ชื่ออื่นๆ
- Full Path Disclosure (FPD)
- Local Path Disclosure (LPD)

==========
ปล. พยายามเขียน หล่อๆ และ หลีกเลี่ยง คำว่า เอาไปแฮกชาวบ้าน ได้เท่านี้ว่ะครับ ^^"

Monday, November 11, 2013

การใช้ torrent client ใน tracker ต่างๆ ทำ ddos ทาง UDP protocal


[2600 Admin]
P2P threat *0* http://www.lifelock.com/education/id-theft-types/file-sharing/ http://iptps06.cs.ucsb.edu/papers/Liogkas-BitTorrent06.pdf
เกิดขึ้นจริงกับ torrent protocol ได้ไหมหว่า evil peer สามารถโหลดไฟล์นอกเหนือจากที่จะแชร์กัน.. seed ไฟล์หนังแต่ดันกลายเป็น เปิดให้ peer โหลดไฟล์ข้อมูลอื่น ๆ บนเครื่อง

[ตาเล็ก วินโด้เก้าแปดเอสอี]
ถ้า torrent
ไฟล์ จะเป็น tracker/?info_hash=sha1(contentทั้งหมดของfile){40ตัว}
ปัญหาคือ จะรู้ได้ไง ว่า sha1 ของไฟล์ เป็นอะไร
อธิบาย ใหม่ๆ
เอา แบบ ปกติ ก่อนนะ

[2600 Admin]
evil peer นอกจากจะโหลดไฟล์อื่นจากเครื่อง leech ได้แล้วยัง manipulate bandwidth ใช้เป็น ddos farm ได้ด้วย http://torrentfreak.com/bottorrent-using-bittorrent-as-a-ddos-tool-101229/

[ตาเล็ก วินโด้เก้าแปดเอสอี]
- step (1.) torrent client ส่ง info_hash ไปหา tracker (port 80) เพื่อขอ ข้อมูล peer (ip:port {return มาเป็น bencode})
- step (2.) tracker ส่ง peer กลับมา (bencode {status{array[peer:port],}})
- step (3.) torrent client ส่ง UDP วิ่งไปคุยกับ peer (ip:port) ที่ได้มา
ช่วงนี้ มันจะทำ checksum กันเอง .. แล้วมันก็จะโหลดไฟล์ กันจาก Info_hash นั่นแหละ
(ตรงนี้ ไม่ได้ แงะ .. packet แม่งวิ่งเยอะจัด)
=======
ทีนี้ มาดู farm ddos (udp)
ก็คือ ส่ง info_hash ไปขอ peer จาก tracker (ง่ายๆ คือ ไป list ip:port มา)
อ่อๆ ผิดๆ เอาใหม่ๆ
ทีนี้ มาดู farm ddos (udp)
ก็คือ ส่ง info_hash ไปขอ peer จาก tracker โดย ยัด header ไปว่า มาจาก proxy (x-forward-for) ซึ่ง คือ ip เป้าหมาย
ทีนี้ ก็ยัดไป ทุกไฟล์ที่มีใน tracker เลย ....
ทีนี้ เดี๋ยว พวก peer ที่มีอยู่ใน tracker มันมาถล่มเอง ทุกๆ 60วิ

[2600 Admin]
กูเกิลดูเจอว่ามีพรีเซ้นในงาน usenix ด้วย รูปหน้า 2 ทำให้เข้าใจง่ายขึ้น https://www.usenix.org/legacy/event/sruti07/tech/full_papers/eldefrawy/eldefrawy.pdf

[ตาเล็ก วินโด้เก้าแปดเอสอี]
<--- เขียน code ระบบ piratepeer ไว้ ผ่านไป 2 ปี แล้ว
แงะ กระจุย เหลือแค่ check sum ที่วิ่งใน UDP อ่ะ

Thursday, November 7, 2013

fix unable to resolve host address in centOS6.4

เวลาลง centOS ใหม่ๆ จะมีปัญหา เรื่อง dns
ประมาณว่า เวลา wget จะเจอข้อความราวๆ
Resolving github.com... failed: No address associated with hostname.


วิธีแก้ คือ ตั้ง dns ให้ เครื่อง
ผมก็ลักไก่ใช้ของ google ซะเบย ^^"
echo "DNS1=8.8.8.8" >> /etc/sysconfig/network-scripts/ifcfg-eth0
service network restart

กรณี network ไม่ทำงานตั้งแต่ตอน boot ให้ตั้ง
/etc/sysconfig/network-scripts/ifcfg-eth0
ตรง
ONBOOT="yes"

แล้วก็
chkconfig network on

Install Python 2.7.6 on Centos 6.5 x64


Install requirements
yum -y groupinstall 'Development Tools'
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel wget


Download and compile python 2.7.6
cd /tmp
curl -O http://python.org/ftp/python/2.7.6/Python-2.7.6.tgz
tar xfz Python-2.7.6.tgz
cd Python-2.7.6
./configure --with-threads --enable-shared
make && make altinstall


Configure libraries: (shared libraries: libpython2.7.so.1.0)
ln -s /usr/local/bin/python2.7 /usr/bin/python2.7
echo "/usr/local/lib/python2.7" > /etc/ld.so.conf.d/python27.conf
echo "/usr/local/lib" >> /etc/ld.so.conf.d/python27.conf
ldconfig

Test python2.7
python2.7 
Result : [type exit() to exit]
Python 2.7.6 (default, Dec 23 2013, 17:36:30)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>


Install easy_install 2.7, pip 1.4.1 and virtualenv 1.10.1
cd /tmp
wget http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg --no-check-certificate
sh setuptools-0.6c11-py2.7.egg
easy_install-2.7 pip
easy_install-2.7 virtualenv


Test pip
pip list
Result
pip (1.4.1)
setuptools (0.6c11)
virtualenv (1.10.1)
wsgiref (0.1.2)


Test pip install
pip install crypto
Result
[root@localhost tmp]# pip install crypto
Downloading/unpacking crypto
  Downloading crypto-1.1.0.tar.gz
  Running setup.py egg_info for package crypto

Downloading/unpacking rsa (from crypto)
  Downloading rsa-3.1.2.tar.gz
  Running setup.py egg_info for package rsa

    warning: no files found matching 'README'
Downloading/unpacking pyasn1>=0.1.3 (from rsa->crypto)
  Downloading pyasn1-0.1.7.tar.gz (68kB): 68kB downloaded
  Running setup.py egg_info for package pyasn1

Installing collected packages: crypto, rsa, pyasn1
  Running setup.py install for crypto

  Running setup.py install for rsa

    warning: no files found matching 'README'
    Installing pyrsa-encrypt-bigfile script to /usr/local/bin
    Installing pyrsa-encrypt script to /usr/local/bin
    Installing pyrsa-verify script to /usr/local/bin
    Installing pyrsa-sign script to /usr/local/bin
    Installing pyrsa-priv2pub script to /usr/local/bin
    Installing pyrsa-decrypt script to /usr/local/bin
    Installing pyrsa-keygen script to /usr/local/bin
    Installing pyrsa-decrypt-bigfile script to /usr/local/bin
  Running setup.py install for pyasn1

Successfully installed crypto rsa pyasn1
Cleaning up...
[root@localhost tmp]#


ex01.py (use #!/usr/bin/python2.7 for select python version 2.7)
#!/usr/bin/python2.7
print "windows98SE"
Why You Don't LIKE My FaceBook Fanpage ?
×
blogger