漏洞挖掘与工具

作者: CanMeng | 来源:发表于2018-08-06 13:47 被阅读6次

    一、漏洞挖掘心理学

    安全的木桶理论

    找到最薄弱的那个点;

    有一个漏洞的站点,很可能还会有更多的漏洞

    开发人员的安全意识问题;

    存在于一个站点的漏洞,还可能存在于其他站点

    业务的代码复用;

    通用型漏洞(wordpress插件漏洞,Discuz 更新不及时);

    修复了的漏洞不一定就全部修复完整了

    指哪修哪;

    绕过修复;

    学会找扫描器扫不到/其他白帽子难发现的漏洞

    需要深度交互/认证;

    存储XSS/CSRF/越权/逻辑漏洞;

    挖掘漏洞的过程

    通常需要先找到危险函数,然后回溯函数的调用过程,最终看在整个调用的过程中用户是否有可能控制输入;

    绕waf的一般思路

    1). 预处理利用:即设法绕过 WAF的输入验证,比如 HTTP头( X-Originating-IP 、XForwarded-For 、X-Remote-IP 、 X-Remote-Addr)的处理,就曾多次被用于绕过公司WAF 的SQL 注入防护,或者 HTTP方法头 GET/POST 的篡改、换行符的处理等等方式;

    2). 致阻断失配:利用前后端数据处理的差异,使得无法匹配到黑名单里的规则,通常结合一些参数污染、字符编码、注释符等多种方式绕过;

    3). 规则集绕过:通过暴力枚举出 WAF的拦截规则,或者逆向 WAF程序获取规则,然后再设法绕过。

    权限与绕过思路

    二、常用的浏览器插件(Firefox)

    Firebug

    强大的网站调试工具,同时可以用来简单抓包

    Tamper data

    抓包修改功能

    Hackbar

    手工测试SQL注入/XSS的利器,有编码功能

    LiveHttpHeader

    抓包工具,使用方便,常用于测试CSRF

    三、常用的WEB安全工具

    AWVS

    全能的Web安全漏洞扫描器,并附带有很多实用的工具

    如果电脑本身需要通过代理访问外网,那么也需要设置下 application settings--application updates 设置 proxy server

    NetSparker

    对SQL注入,XSS,LFI等漏洞扫描效果不错的漏洞扫描器

    BurpSuite

    功能全面,个人常用于暴破,抓包,CSRF测试等等

    需要设置浏览器代理为8080,才能捕获数据包,抓取https 包需要浏览器访问 http://burp 下载证书并导入。

    有时电脑本身需要设置代理才能访问外网,则需要设置 Burp options--connections--upstream proxy servers

    Layer

    子域名/IP段收集,同时可过滤过出存活主机

    Fiddler

    常用的抓包工具,有XSS自动化扫描插件

    打开fiddle,默认会设置浏览器的代理为fiddle 监听的8888端口,而fiddle 自己则从系统代理出口(也可以自己设置一个代理如 http=10.2.2.1:80)出去;需要设置一下才会拦截数据包,否则只是快照一下。

    注意:pc 端软件发出的http/https请求也会被捕获,但私有协议(即应用层自定义包体)是抓不到的,可以用wireshark 抓到此类的包。

    客户端软件发出的http/https请求有两种情况。一种类似内嵌了一个浏览器来解析html、执行js事件等,比如一个功能点,进来的原始页面(抓包)中可以搜到此功能点的一些关键字,往往就是以内嵌浏览器的方式执行js 来完成此功能,直接把入口页面复制到浏览器访问,然后console 搜索keyword。

    另一种是客户端直接请求的服务端cgi,这在进来的原始页面(甚至没有入口)是找不到功能点的关键字的。

    Sqlmap.py

    数据库注入神器

    owasp 漏洞扫描全集

    Vulnerability_Scanning_Tools

    四、github安全类repo 收集子域名爆破

    subDomainsBrute

    Sublist3r

    subbrute

    altdns

    wydomain

    主机指纹,第三方应用发现

    whatweb

    bannerscan

    wyportmap

    wafw00f

    目录爆破,文件发现

    dirsearch

    OpenDoor

    DirBuster

    filebuster

    敏感文件、信息泄漏

    BBScan

    GitHack

    htpwdScan

    Sreg

    weakfilescan

    GitPrey

    弱口令扫描

    F-Scrack

    cupp

    数据库注入

    sqli-hunter

    源代码审计(仅针对开发本身)

    BadCode

    cobra

    phpstan

    Source_Code_Analysis_Tools

    源代码审计(针对第三方库依赖

    retire.js

    OSSIndex

    DependencyCheck

    bundler-audit

    security-checker

    dawnscanner

    scancode-toolkit

    五、一些杂项

    修复Firefox 的Live HTTP headers 无法 replay 的问题:

    在firfox 地址栏输入:about:support,然后进入配置文件夹

    找到Live HTTP headers插件的目录,我的在~/.mozilla/firefox/df0j3s9g.default/extensions/{8f8fe09b-0bd3-4470-bc1b-8cad42b8203a}/chrome,可以看到有livehttpheaders.jar这样一个文件,用解压工具打开,进入content 目录,找到 LiveHTTPReplay.js,解压此文件,并修改。大概在32行左右,修改:

    document.getElementById("livehttpheaders.replay.headers").value = args[4];

    替换为:

    document.getElementById("livehttpheaders.replay.headers").value = args[4] + "If-Modified-Since: *\n";

    修改完成后,继续用解压工具打开刚才的 livehttpheaders.jar,将修改后的LiveHTTPReplay.js 替换 livehttpheaders.jar 里的 LiveHTTPReplay.js,由于文件被修改,导致 jar 签名改变,高级版本的 firefox 会禁止加载 livehttpHeaders,对此可以 在Firefox 配置编辑器 (about:config 页面)中,更改首选项 xpinstall.signatures.required 为 false 即可。完成后重启 Firfox,replay 功能就可以使用了。

    爬虫

    爬虫最基本的功能就是从一个页面进入,获取到url,再进一步递归访问此页面的所有url,递归多少次可以称为层数。

    url基本存在形式:在本域以标签形式嵌入/拼接、在本域内以事件类被调用、在外域被以事件类调用

    手工正向查找(chrome):

    进入某页面,inspect 某标签、查看某标签绑定的事件(可以在 console search event keyword)

    进入某页面,触发某些按键,观察 Network 一栏发出的请求,注意看 refer 是否是当前页面

    进入某页面,打开抓包软件,触发某些按键,观察发出的请求

    反向验证查找与正向查找类似,但可以更便捷,进入某页面,直接在 console search url keyword

    对于完全没有入口,没有被调用,或者被调用时需要一些前置步骤的情况,爬虫是没办法爬到此url 的。

    在f12 出来的左侧第二栏有个 toggle device toolbar 可以模拟客户端访问网页的请求(即修改了user-agent等字段),此时某些网站会跳到为手机客户端访问的网页,如 http://fun.qq.com/m/ 或者 http://m.fun.qq.com 等形式。

    burpsuite 显示界面乱码问题

    如果是中文乱码的话,解决方法:options->display->font 调成微软雅黑等中文字体就可以。

    linux下中文乱码,没有微软xx字体,下载文泉驿字体,即可解决。

    js 调试

    在浏览器(chrome)产生跳转的情况下,第一次返回的内容可能看不到,这时候借助抓包工具就能看到每次请求的返回情况,当然也可以在请求的瞬间按下ESC 键,停在第一次请求返回的页面上,然后在 source 那里设置下断点,F5 刷新一下,就可以跟踪调试了。preserve log 选中时有可能部分请求返回的数据没有显示出来。

    console 左侧有个竖立的省略号,点开有个search 功能很好用,可以查找到 source 里面的关键词,即当前页面引用的所有js 文本都可以搜索到,对于查找ajax、事件类等才会拼接发起请求的 url 有很大帮助,同时观察下Network 一栏发出的请求。

    如果想自己本地改js 代码调试,最好 ctrl+s 保存 Html 后浏览器打开文件进行调试。

    注意:form action、Location header、js 中window.location.href 等最终请求时浏览器地址栏会变化;而 ajax 请求时地址栏不会变化,ajax 返回的数据一般比较少,往往只是一些状态信息。

    客户端app 抓包

    1).笔记本电脑和手机连的同个wifi,笔记本开着 burp 监听 8888 端口,手机点击连接的wifi,高级设置中设置代理为笔记本ip:8888,这样手机的网络请求也会先通过 burp。

    2).笔记本电脑自己使用猎豹wifi 等软件开启一个wifi,手机连接此wifi,且把代理设置为此wifiip:8888

    同理,抓不到私有协议的包,抓取https的包需要手机访问 http://笔记本ip:8888 导入证书,不同设备需要重新导入证书(一般在设置--安全选项),有些手机暂时不支持der 格式,只能识别cer 格式,使用火狐浏览器转,导入并导出下 adb push 到手机目录就可以了。

    3). 在 android 手机上安装 google chrome 浏览器,开启 usb 调试选项,在 桌面版chrome 输入 chrome://inspect/ 可以看到 列出来的设备如 Che2-UL00 #DU2WKN14BS004912,以及此设备通过谷歌浏览器正在访问的网页,点击 inspect 就可以在电脑上调试手机访问的页面。

    tips:下载app 时先不要挂代理,否则可能下不动。

    外网代理扫描和端口扫描

    网络设备就只有acl控制,没有iptables类似的功能,不能把端口封掉,只能对ip做权限控制。

    网络做了acl控制,但是端口依然开放;nmap udp扫描会发个空udp包,如果响应icmp的回包,说明端口开放,所以做好控制,namp依然会扫出来。

    影响:网络设备也存在被入侵的风险,黑客可能通过网络设备入侵到内网。

    解决方法:

    网络设备应当用独立与nmap的高危端口扫描模块,开发单独模块独立扫描。

    网络设备主要是udp协议扫描出来的,分为ntp和snmp服务;

    a)ntp服务可用ntpdata命令执行检测

    b)snmp可用snmpwalk命令执行检测

    代理扫描:从外网ip 通过代理请求 内网web页面,如果能够获取页面内容说明代理能够访问内网,存在风险

    相关文章

      网友评论

        本文标题:漏洞挖掘与工具

        本文链接:https://www.haomeiwen.com/subject/icawvftx.html