1.CTF-Web

原文链接: http://www.cnblogs.com/sec875/articles/11586899.html

使用的MP,MK编辑器
网络安全好不好 要看linux牛不牛 大部分平台都在linux上
C java python需要有点基础,没有基础不建议报班

CTF-Web

web漏洞挖掘与利用

基础划分

java web --->web漏洞挖掘 web服务器安全检测 web代码审计 web常见漏洞 web的补丁方法
pip install pwntools 直接就完事了 不要用pip3安装
kali的源source list,rolling 阿里的源也很稳定

python ---->漏洞利用脚本设计
所有的漏洞都是由网络数据包而触发的

C/C++ ---->web服务器的运维 它的安全40%取决于运维

web的漏洞挖掘经验

attack & defence-wdeilim WEB AWD 漏洞挖掘技巧

PHP是源码,做好代码审计就OK。

  • 调试环境搭建
    PHP 5 & 7 MySQL Apache或Nginx或Python iis+asp太老了,无人用,没有挖漏洞价值
    PHPstudy https://www.xp.cn/ 集成所有调试环境,几十万肉鸡沸沸扬扬,官网下载就没事。这是新官网。
    如果你会算哈希值的话,从哪里下载都无惧。

    PHP插件xdebug 调试
    挖目标的漏洞,需要模仿目标的环境,对各配置文件要熟悉
    MySQL管理器---MySQL-front 图形化数据库交互就出来了 与navicat操作数据库是一模一样的

工具组合 PHPstudy(环境)+Xdebug(断点调试)+PHPstorm10(栈分析)
对PHP进行断点调试。
查找调用栈,对流量进行快速分析。如果你用这些知识去类比C/C++的 debug,更容易手到擒来。

Xdebug安装 php扩展及设置-PHP扩展-Xdebug 出来以后在底下加上下面一段环境变量
[XDebug]

zend_extension="path\to\xdebug.dll"
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_name = "cache.out.%t-%s"
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
  • 常见web漏洞
    webshell 文件上传漏洞 文件包含漏洞 数据库攻击(SQL注入) 反序列化攻击(XXS) XXE攻击

nmap探测服务器有什么东西,访问网站拿到PHP代码(现实中是收集所有开源CMS)
就如linux与windows,linux开源,大家一起研究出来的漏洞都被补得差不多了,你很难看见linux的漏洞。
但是windows不开源,同样的问题linux存在难道windows就没有了吗?不开源还可以调试。所以windows大把漏洞。

  • webshell(后门):通过网页进入到web站点后台,类似于个人电脑的CMD控制台,类似于windows服务器的powershell控制台。
    无混淆的webshell(现实中很少)
    有混淆的webshell
    1.CTF-Web_第1张图片

很多公司在做好网站以后会加一个自己的后门:1.方便以后的运维管理 2.利益上的企图
上传到可写目录中,chmod a+x,路径查配置文件确认。一般情况下不会出现。
通过webshell进去以后就可以执行linux命令了,接下来去提权,想干嘛就干嘛。

webshell怎么找,用什么工具呢?rips-0.55(字符串匹配工具,用的正则匹配)
检索PHP文件中哪里有类似于混淆的webshell的代码。

  • 文件上传漏洞
    上传检测方式:客户端JavaScript检测 服务端MIME类型检测 服务端文件扩展名检测 服务端内容检测
    访问网站时点一个链接,能上传文件,还能找得到,上传的文件能够在未认证的情况下去访问。
    上传一个webshell,一句话木马用菜刀去连接。

客户端JavaScript检测
一般为检测文件扩展名
绕过方式
删除页面js检测代码
抓包工具修改包的内容 (filter工具,包重定向)
使用脚本进行攻击(访问每一个链接,看看哪个可以传)

服务端MIME类型检测
检测上传文件的Content-Type内容
绕过方式
抓包修改为相应的白名单的内容
1.CTF-Web_第2张图片
content-Disposition(白名单):加一个 filename="shell.php" 就不会检测这个文件到底是什么。
Content-Type:image/gif 只允许这个后缀的文件上传

有两种方式可以检测到:1.监控实时流量(基本不可能)2.从网络日志文件,网络协议数据文件里面看。如果你的流量大到一定程度的时候,基本找都找不到。  如果对方是大胜靠德招进来的人,是一定会查到异常流量的,时间问题。

服务端文件扩展名检测
1.CTF-Web_第3张图片
上传 .htaccess文件攻击
解析漏洞绕过
Apache CVE-2017-15715

.htaccess是apache服务器的访问控制列表文件。上传文件一般都会上传到可写目录里面,又怕别人上传一个非法文件。
于是只能用访问控制列表文件来做限制策略。放到可写目录中来做这个限制。
1361927-20190927230256475-949397702.png
有以上后缀的文件上传以后,都给它干掉,这就叫访问控制列表文件。可以设置允许某些文件,也可以设置禁止某些文件。
黑,白名单。通常在安全类书籍中,推荐白名单。

要权限分明,哪些文件夹可写,哪些文件夹不可写。 ls -l 看权限。
比如,QQ空间图片上传,放到服务器的某个文件夹中,如果其他文件夹也具备可写权限,这就是一个漏洞。修改权限。
如果这个文件夹的业务功能必须要可写权限,就需要自己写一个.htaccess访问控制列表文件放入此文件夹中。
文件名是固定的,属于apache服务器中的解析关键字,上传到哪里,哪里就会起作用。

大型的网站,后台通常都是apache服务器,python是写网站其他东西的。

文件拓展名检测,比如检测以下扩展名。
1.CTF-Web_第4张图片
当您看见CVE这一串编号的时候,在圈内就等于别人已经告诉你漏洞利用了。
到了这里您会提出疑问,我知道漏洞编号,应该怎么实战,怎么对应的写补丁程序了。一个搜索引擎就可以搞定。
没有绝对的安全,同时也没有绝对的一定攻得进去。补丁打上了,我们就得另找它路,这是一个永恒的对抗过程。
之所以攻得进去就是由于信息差,运维人员没有掌握这个知识点或者疏忽。如果运维人员比你的知识面还要广,就难了。
关于0day漏洞,零日漏洞属于战略性杀伤武器,不到万不得已是不会拿出来的,一个小型的0day起价就是几十万美金。
如果有人告诉你,我手里有0day教你怎么挖,那都是骗小孩子割你韭菜的。尤其是抖音上面的搞笑版黑客。。

服务端内容检测
1.CTF-Web_第5张图片

  • 通过API或者函数对文件加载检测
    GD库

如何去查找文件上传漏洞呢?
最简单的方式就是代码审计工具(字符串检索工具),先查找所有文件里面出现upload的位置。
定位在哪些地方调用了上传的upload,然后在这个上下文中看看有没有可能造成。

  • 文件包含漏洞
    触发函数:include()/include_once() require()/require_once()
    PHP.ini:allow_url_fopen默认为on allow_url_incluede默认为off

你包含了一些文件,这些文件又不是你写的。这些文件看得见,就可以修改这些文件,达到让你去执行这个修改的程序。
类似于C语言的dll库,调用了这个库,这个库又不是你写的,别人也能看得到,就把这个库给替换了。执行库里的函数。
类似于python的import
1.CTF-Web_第6张图片

包含上传文件
1.CTF-Web_第7张图片

如果管理员在安装好PHP的默认环境不去删除这个phpinfo文件的话,就会包含它。里面各种系统信息,版本信息,配置命令等各种数据。
包含了这个文件,它就会解析这个phpinfo,一解析就等于源码会执行这个phpinfo,你只需要更改当前phpinfo里面的东西。
就会造成远程修改这个文件并让PHP网站去执行。

市场决定语言,不要以为java就比php要好要安全,哪个语言都不好。
如同企业基础设施布局一样,企业之所以能赚钱是因为有知识去接业务,本质在人,而人依赖知识,最终的根源还是落在了人才争夺战上面。谁给钱就给谁做知识储备库,谁给钱就给谁做安全。
到了网络安全的程度时,需要什么就学什么。哪一个语言都不可能用到地老天荒。

包含session
1.CTF-Web_第8张图片
会保存前几次会话到路径中,这些路径都有一些文件可以被web服务器所调用,如果在这些文件里面找一些文件可以修改的话,造成文件包含漏洞。
如果你可以远程修改这个文件的话,PHP又可以执行这个session,

由如漏洞的思维一样,所有的语言表达思维都是互通的,您只是不清楚它的关键字怎么写。
您掌握了web的关键性漏洞及其漏洞利用以后,就可以用它们的思维去类比二进制中的漏洞了。
请问,客户端/服务器架构中的游戏程序有没有呢?物联网设备与基站有没有呢?都会存在会话这个机制的交互功能的。
只不过它们的函数,关键词,命名不同而已,您需要花时间的地方是漏洞思维周围的这些关键性词语变什么样子了,以及附加了什么安全策略来防止这些问题,它们是否发挥了初衷的效果,真的是安全的策略。

这样一来,您就会更加近距离感受到类比带来的高效了,您之所以花一个小时低得过别人学一天的秘密就在于此。好好的利用它。在类比的同时,您需要更多的东西去做这个类比,建议学一个东西一个语言,投入的时间越多对于学习新的知识的效率反而是更有利的,建议某一种语言学习6个月以上随便找一个免费版的培训机构(比如湘潭教育,黑马等知名机构的)流传出来的语言即可。linux教程推荐老男孩机构的,因为i春秋正在和老男孩机构密切合作,研发linux安全运维。这些推荐内容听过,知识可以胜任入门所需。
在有了一门语言和一个linux系统的运维知识以后,您还需要一门网络安全的课程。和刷题考证的手法一模一样,您需要刷的不是题了,而是知识,刷完以后刷靶场。这个圈子您就进去了。神秘的黑客大门将向您打开,之后的进修内容不用说您也懂。与考公务员同理,只要进去了,岗位瞎几把调都无所谓。入职企业优势是薪水高,学的东西核心;公安局是有排场,打击黑产抽提成。

  • 防御方式 属于运维的范畴
    全局搜索inclue等函数
    参数是否可控?白名单正则来限制输入的参数。

  • 数据库攻击 SQL注入
    • flag在数据库
    • flag为本地文件
      • load_file('/path/to/read')

SQL注入都是做截断,把正常的URL截断了。后面加一个当前的SQL语句。
* getshell
* 读取配置
* @@global.secure_file_priv
* 写文件
* select ... into outfile '/path/to/save';
* select ... into dumpfile '/path/to/save';

现实工作中使用sqlmap去扫描。
还可以盲注:在URL里面加一些SQL语句,能进的去就能远程曝它的数据库。
PHP代码里面有这样的语句:passwd="$arg3"。arg3是参数,远程传过来的
arg3 = test";select form * xxxx; 截断以后就运行SQL语句了。
密码都是加了盐的哈希值

  • 反序列化函数
    • PHP序列化函数
      • serialize()
      • unserialize()
  • 反序列化漏洞 审计方法和文件包含漏洞确认方法是一模一样的。
    • 全局搜索unserialize()函数看输入是否可控
    • 查找带有magic函数的class
      • 源码本身
      • 引用的第三方库
    • 构造调用的rop链
      weblogic是反序列化漏洞

挖漏洞,代码审计就是先找标志字符串,再看上下文。

  • XXE漏洞 近5年都很少见这样的漏洞了
    • 前提:PHPinfo中的libXML Compiled Version < 2.9.0
      • 默认不解析外部实体,导致XXE漏洞逐渐消亡
    • 不同程序支持的协议不同
      1.CTF-Web_第9张图片
  • 基础知识——正则
    • 常用元字符
      1.CTF-Web_第10张图片
      1.CTF-Web_第11张图片
  • 基础知识——requests库
    1.CTF-Web_第12张图片

  • 常见套路——公布的RCE漏洞
    1.CTF-Web_第13张图片

  • 常见套路——本地备份漏洞库
    1.CTF-Web_第14张图片

filelocator pro 快速搜索所有内容

参考资料:
https://www.bilibili.com/video/av62214776/?p=2

转载于:https://www.cnblogs.com/sec875/articles/11586899.html

你可能感兴趣的:(1.CTF-Web)