read_book_note

 · 2020-4-29 · 次阅读


读《黑客攻防技术宝典》笔记:

第四章:解析应用程序

解析应用程序首先是枚举应用程序的内容与功能。
枚举内容与功能

  • 手动浏览
    基本方法:从主初始化页面开始,然后是每一个链接所有多阶段功能(如用户注册或密码重设置)

  • Web抓取(自动化)
    可以使用Web应用程序爬虫(spider)分析HTML表单
    工具:Paros,Burp Spider,WebScarab

robots.txt有时包含了一些敏感功能的参考信息。(其实之前学爬虫也学到,这是网站的一个公告牌,代表不希望爬虫访问的URL,但取决于使用爬虫方,实际并无法阻拦爬虫)
自动化爬虫通常使用URL作为内容标识符,但相同的URL也可能会返回截然不同的内容与功能。因而自动化爬虫也会遗漏很多功能。还有很多随机数种子的参数会导致爬虫进行不确定抓取,这也是自动化抓取的缺点之一。

  • 用户指定的抓取

测试步骤

  1. 使用BP或WebScarab作为本地代理服务器
  2. 以常规方式浏览整个应用程序,访问发现的每一个URL,提交每一个表单并执行全部多阶段功能。并尝试在JavaSript激活与禁用、cookie激活与禁用的情况下进行浏览。
  3. 检查由代理服务器/爬虫工具生成的站点地图,例如BP spider中,检查(Linked from)的详细内容。
  4. 也可要求工具主动抓取,但应先排除会导致网站崩溃以及错误等情况。
  • 发现隐藏的内容(P57)

应用程序为不同类型的用户提供不同的功能,因而要发现隐藏的内容势必需要得到一定的权限。
当然初次之外还有:

  1. 备份文件
  2. 包含Web根目录下完整文件快照的备份档案
  3. 部署在服务器上、用于测试目的、但尚未在主应用程序中建立链接的新功能
  4. 编译现有应用程序功能的源文件
  5. 数据库证书等包含敏感数据的文件
  6. 旧版本文件
  7. 会话令牌

返回200 OK可能也会代表请求错误。如果出现302那么极有可能是只有通过验证的用户才能访问该资源,但如果指向另一个位置,这个重定向也可能是应用程序特定逻辑的一部分。
出现400 Bad Request极有可能url中包含一些空白符或者无效的语法
401 Unatuthorized与403 Forbidden表示请求的资源存在,但表示该资源无论什么用户都是被禁用的,但可借此判断目录确实存在
500 Internal Server Error该响应表示应用程序希望在请求资源时提交某些参数。

可使用BP Intruder用于循环访问一组常见的目录名称并收集服务器的响应信息

收集从服务器收到的响应,并手动检查这些响应以确定有效的资源,渗透中应当反复执行该过程直到发现新内容。

  • 利用公共信息

可以利用搜索引擎或者Web档案发现网站的历史记录

Google黑语法
Web档案:Web.archive.org-WayBack Machine
使用site:www.wahh-target.com 将返回Google引用的每一个目标站点资源
site:www.wahh-target.com login将返回所有包含login表达式的页面
link:www.wahh-target.com 会返回包含目标站点链接的页面
related:www.wahh-target.com 会返回相似的页面。

读《安全客-2018年季刊-第三期》笔记:

账号扫描在攻击链中的作用通常有以下几种:
判断该账号是否可注册,若可以,则可以恶意注册。
判断该账号是否存在,若存在,则进行撞库攻击。
判断该账号是否已存在,若存在,则抓取相关信息收录到社工库用户画像。、

2018上半年,游戏行业占据了撞库工具超过七成份额。

流量欺诈:包括刷热度(72.41%,刷榜13.03%,刷广告(7.24%0),刷粉(4.78%),刷单(2.54%))

读梅子酒师傅审计Rips有感:

总结一下审计思路:

首先是列出应用的文件框架,结构。大致清楚其具有些什么功能,分别是干什么的,相互之间的联系。

可以先查看配置文件,其间使用include包含了大量的应用中文件,从配置中可以对应用的功能了解的更清楚。

然后可以从index.php也就是应用页面入口点开始,这个文件可能很多静态部分,审计时候以动态其逻辑为主,单个php文件审计时候,观察其中包含的函数,
研究函数的功能:

  • 观察函数拥有的参数,参数是何种作用,是否可以由用户输入
  • 参数经过了什么逻辑,函数究竟功能是什么?
  • 由里面的变量(参数)的变化过程,比如赋值,判断等来更清楚的了解函数功能,掌握了php文件里面的所有函数功能,若再能对它们进行统一,就能很清楚的掌握整个php文件的功能了。

index.php中处了一些静态模块,简单的逻辑更多的应当充当一个入口,通过它可以进入到更多的功能文件中,因而审计index的过程极有可能会跳转掉最具中心的文件中。例如梅子酒师傅审计index.php中先去到了main.php中。main.php进去后先是配置文件的引入,就是使用的include。同样java和python也使用了import的方式引入系统库或者自己写的库。
在分析函数功能时候,可以根据参数名字进行推测,猜测参数经过过程。如何被函数处理,达到什么效果?

审计单个文件思路我总结就这样了,有不足之处,以后随着学习,继续更正。

读《SQL注入攻击与防御》【(美)Justin Clarke 著 李化 黄晓磊译】

Web应用开发人员应与数据库管理员协同工作,以保证程序的数据库访问在最低权限模型下运行,同时应针对程序的功能性需求适当地分离授权角色。

理想情况下,应用还应当使用不同的数据库用户来执行SELECT、UPDATE、INSERT以及类似的命令。

WEB应用的工作原理

  • Web应用是一种使用Web浏览器并通过Internet或内部网访问的程序。它同时还是一种使用浏览器所支持的语言(HTML、Javascript、Java等)编写的计算机软件程序,借助普通的Web浏览器来呈现应用程序的可执行文件。
  • 基本的数据库驱动的动态Web应用通常包含一个后台数据库和很多包含服务器端脚本的Web页面,这些脚本则是可从数据库(数据库的选择依不同的交互而定)中提取特定信息的编程语言编写而成的。
  • 基本的数据库驱动的动态Web应用通常包含三层:表示层(Web浏览器或渲染引擎)、逻辑层(C#、ASP、.NET、PHP、JSP等编程语言)和存储层(SQL server、MYSQL、Oracle等数据库)

WEB浏览器(表示层)向中间层(逻辑层)发送请求,中间层通过查询、更新数据库(存储层)来响应该请求。