作者:手机用户2602936475 | 来源:互联网 | 2023-08-29 15:07
无论是在甲方公司还是乙方公司,对于安全工程师,渗透测试能力和应急响应能力都是必不可少的。而在应急响应过程中,以解决实际为导向的编程语言——Python,更是信息安全从业者必备四大编程语言之一。因
无论是在甲方公司还是乙方公司,对于安全工程师,渗透测试能力和应急响应能力都是必不可少的。而在应急响应过程中,以解决实际为导向的编程语言——Python,更是信息安全从业者必备四大编程语言之一。因为Python能够快速验证你的想法,应急其实就是在跟黑客争分夺秒。所以,天下武功,唯快不破。
为什么会有人说“未知攻,焉知防”呢?因为黑客的攻击思路都比较“猥琐”,都是以点进行突破的。如果你刚好有一种攻击手法不了解,那么就没办法防御以这种手法对你进行攻击的黑客。
未知攻,焉知防。也就是我今天要说的《灰帽黑客的渗透测试之道》之道2.
多了解一些安全事件,多关注一些漏洞公告,多学习一些攻击手法,才能做好安全防御。
下面来说下近期遇到的一个安全事件,某宿科技是提供内容分发与CDN加速的公司。他们通常给用户提供几百个
CDN节点,在每个节点上分发缓存的静态资源来达到网络加速,防御DDOS攻击等。但是,当某个CDN节点被劫持后,
凡是当时访问该节点的用户都会遭受攻击。来张图:
当用户在浏览器输入正常的网址,进行登陆时。会被劫持到http://61.160.185.39:8082/,该网址会生成一个js脚本
注入到用户的浏览器中,从而劫持其账户密码。直接在浏览器查看源码是看不到关于8082这个端口的相关链接的,
因为该请求是某个隐藏很深的静态资源触发的。无奈没有这些CDN节点的登陆权限,因此也只能通过外部来测试。
现在我需要模拟Firebug解析出全部的网络请求。不断切换本机host访问该登陆页面。
为了解析这些网络请求,我使用mitmproxy做http代理,用selenium模拟访问。
#encoding:utf-8
#mproxy.py,设置为代理,并dump所有网络请求
#python3.5.3from mitmproxy.tools.main import mitmdumpmitmdump()
#encoding:utf-8
#switchVisit.py不断切换本机host并访问passport登陆页面
#python3.5.3import osfrom selenium import webdriverimport timeimport datetime#设置HTTP代理profile=webdriver.FirefoxProfile()profile.set_preference('network.proxy.type', 1)profile.set_preference('network.proxy.http', '127.0.0.1')profile.set_preference('network.proxy.http_port', 8080) # intprofile.update_preferences()ffbrowser=webdriver.Firefox(firefox_profile=profile)#切换hostdef SwitchHosts(ip): try: os.remove(r'C:\WINDOWS\system32\drivers\etc\HOSTS') except: outfile=open(r'C:\WINDOWS\system32\drivers\etc\HOSTS', "w") outfile.close() with open(r'C:\WINDOWS\system32\drivers\etc\HOSTS',"w") as f: f.write(ip+"\tpassport.xxxxxxx.com")#访问网站def VisitWebsite(browser): try: browser.get("http://passport.xxxxxxx.com") except: passif __name__ =='__main__': #cdnnodeip.txt为每行一个cdnip地址 with open("cdnnodeip.txt",'r') as f: for ip in f.readlines(): ip=ip.strip() SwitchHosts(ip) print(datetime.datetime.now(),"----",ip) VisitWebsite(ffbrowser) time.sleep(10)