小迪安全基础

第1天-操作系统_名词_文件下载_反弹SHELL_防火墙绕过
名词解释
poc:指验证代码,能验证存在漏洞
exp:利用代码
payload/shellcode:载荷,通过哪种协议
后门是一个统称
webshell指网站后门
木马和病毒都是恶意程序
木马:可以操控电脑完成操作
病毒:破坏性的程序
反弹:拿到一个webshell,可以把它的权限移交到其他地址或者程序上
跳板:abc三台设备,a连不到c,可以通过b连接c(科学上网就是例子)
黑白盒测试:黑盒子指没有源代码只有一个目标,目标的其他情况什么都不知道的测试,
白盒子指知道目标的一些情况,比如对方的源代码服务器上开了哪些网站的测试
社会工程学:比如通常在设置密码时会使用生日手机号首字母之类作为密码,可以通过这些制作字典来破解你的账号的密码,或者伪造一个人类似诈骗也可以叫社会工程学
撞库:比如某某年百度、腾讯或QQ泄露了一些用户信息的数据库,你收集起来搭建一个平台(我们称为社工库),去找你要找的那个人的注册信息,再去其他平台尝试能否使用
社会工程学和撞库都属于针对个人的方式
ATT&CK:是一个红蓝对抗的框架,里面有各种漏洞的名称,方便书写渗透报告
https://www.cnblogs.com/sunny11/p/13583083.html
https://blog.csdn.net/weixin_43303273/article/details/83029138
操作系统
个人计算机和服务器用机
比如渗透过程中发现对方的设备是windows2016或windows2018那么大概率是服务器机
如果是Windows10的话就是个人电脑
权限
用户&组,administrator带s就是用户组,不带s就是用户
对组进行权限设置,那么在该组的所有成员都会收到限制,当当前获取的用户是一个低权限用户或普通用户,他能作的事情是有限的,所以就需要继续提权
Windows系统上最高权限是system系统权限,我们用户一般是administrator管理员权限,为啥不是系统权限,在计算机上有一些系统文件不能删除,在这之下是user用户。
防火墙
出战和入站策略
一般防火墙对出战要求很宽松,对入站很严格,就是出去容易进来难
但是在web方面的访问走的是app的协议,所以防火墙是默认允许的,还有一种防火墙叫waf就是一个第三方软件针对web的防火墙
实用案例
文件上传下载=》解决无图形化&解决数据传输
获得了对方服务器的权限,要把工具和脚本下载到对方服务器上,就需要一些命令
Linux:wget curl python rnby perl java等
windows :powershell certutil bitsadmin msiexec mshta rund1132
区分powershell和cmd:powershell命令前面有powershell并区分大小写
反弹shell=》解决数据回显&解决数据通讯
数据回显:执行命令之后会有一些回显告诉指令是否成功
有些地方工具是没有回显,大部分安全工具都是只负责把攻击的东西发送过去
交互式命令也需要有回显才能正常操作如Linux的修改密码
结合案例
防火墙绕过-正向连接&反向连接&内网服务器
内网
内网-》 xiaodi8
xiaodi8!-》内网
想要xiaodi8-》内网,需要在网关处写一个策略,将5577端口分给c,c再监听5577
nc是一个工具(),-e这个参数可以将当前cmd移交到后面地址去
nc -lvvp 加端口号 是监听端口
ping命令能得到域名的ip地址
防火墙
正向连接:你nc别人,出战
反向连接:别人nc你,入站
正向反向看以谁为基准
学会了有手就行-Fofa拿下同行Pikachu服务器
文件下载&反弹shell:
一些命令
第2天:Web应用_架构搭建_漏洞_HTTP数据包_代理服务器
搭建网站
需要服务器、域名
域名在购买的时候选择香港地区,(大陆地区需要备案)
服务器购买正常1核2G就可以搭一个网站
宝塔是一个集成化的工具,下面的web应用环境架构都有
建站教程去找吧
web应用环境架构
开发语言:很多
程序源码:可根据开发语言分类;应用类型分类(博客、门户、论坛);开源CMS分类(有一些程序源码开源或商用源码出来后会被命名为CMS);开发框架分类(功能)等;
中间件容器:IIS,Apache,Nginx,Tomcat,Weblogic,Jboos,glasshfish等,中间件要根据不同应用场景选择
数据库类型:Access,Mysql,Mssql,Oracle,db2,Sybase,Redis,MongoDB等,数据库类型也一样需要看需求
服务器操作系统:Windows系列、Linux系列、Mac系列等
第三方软件:phpmyadmin,vs-ftpd,VNC,ELK,Openssh等
第三方软件可有可无(看需要)其他必须要有
这里每一个都或多或少有相应的漏洞,根据分类可以更快的挖出来
一些博客
https://www.jianshu.com/p/558455228c43
https://www.cnblogs.com/cherrycui/p/10815465.html
web应用安全漏洞分类
SQL注入,文件安全(上传、下载、删除、更改、读取),RCE执行,XSS跨站,CSRF/SSRF/CRLF,反序列化,逻辑越权,未授权访问,XXE/XML,弱口令安全等
这些漏洞多是因为程序源码产生的
演示案例
请求包-新闻回帖点赞-重放数据包
正常网页限制只能点一次赞(未登录的情况),通过代理抓包再多次发包来点赞
请求包-移动端&PC访问-自定义UA头
为什么手机访问和电脑访问同一个页面会有不同的响应?
因为在数据请求包中有一项叫User-Agent的东西,他会记录访问者的设备信息以及用什么浏览器访问的,就是标题上写的UA头,从而做出不同的响应
知道这些有啥用?
在做安全测试的时候,需要测试移动端设备的页面访问功能是否能够正常使用,这时候可以用修改ua头的方式进行测试了(只改ua头,全改放不出去包)
返回包-网站文件目录扫描-返回状态码
修改请求头的文件名,通过burp的repeater部分的response的返回状态码来确定该文件(夹)是否存在
这里就对应一个工具,字典扫目录,根据返回状态码确定文件是否存在
文件存在200,文件不存在404,
文件夹存在403,文件夹不存在404
3xx 跳转 处置过程 判断可有可无
5xx 内部错误 服务器问题 判断可有可无
第3天:抓包_封包_协议_APP_小程序_PC应用_WEB应用
抓包技术应用意义
针对一个网站或者APP还是小程序,对于这个目标我们不知道这个目标的信息,这时候就需要抓包
抓包应用的资产信息进行安全测试
抓包技术应用对象
网站应用、电脑应用、手机应用、小程序,因为这些东西你不知道确切的ip地址或者域名
抓包技术应用协议
很多
我们用的一些app其实也需要走web协议,针对不同的协议有不同工具来抓包
有部分应用不走HTTP/S,需要用到全局协议抓包(科来、Wireshark)
抓包技术应用支持
操作系统如Linux、Windows
演示案例
WEB应用站点操作数据抓包-浏览器查看元素网络监听
浏览器自带的工具抓包
APP&小程序&PC抓包HTTP/S数据-Charles&Fiddler&Burpsuite
安装证书,才可以抓https的网站
我都试了以下子,不会用,还是用BP
小程序抓包用bp需要将微信的出口改成抓包软件设置好的ip和端口
程序进程&网络接口&其他协议抓包-WireShark&科来网络分析系统
Wireshark相对专业,需要经验
通讯器类应用封包分析发送接收-WPE四件套封包&科来网络分析系统
封包和抓包不同之处:零散整体的区别,封包能精确到每个操作的数据包
封包抓取
代理机器人apk装到模拟器上,将模拟器流量转发到CCproxy上,再用WPE工具来监听CC进程流量,实现封包,抓其他协议时wifi的代理记得关
不同的还有一个一体化的封包工具
burpsuite 茶杯 fiddler
模拟器设置证书后
设置HTTP代理 -> 运行工具的本机IP 端口
burpsuite 茶杯 fiddler 配置代理监听抓取
wireshark 科来
不需要配置任何东西,他们抓的是网络接口,都抓
第4天:30余种加密编码进制_Web_数据库_系统_代码_参数值
识别算法编译类型
- 看位数
- 看密文的特征(数字、字母、大小写、符号等)
- 看当前密文存在的地方(Web、数据库、操作系统等应用)
密码存储加密
MD5值是32或16位由数字“0-9”和字母“a-f”所组成的字符串
SHAL这种加密的密文特征和MD5差不多,只不过位数是40
NTLM这种加密是Windows的哈希密码,标准通讯安全协议
AES,DES,RC4这些都是对称性加密算法,引入密钥,密文特征和Base64类似
应用场景:各类应用密文,自定义算法,代码分析,CTF安全比赛等
MD5不可逆,但是也能解密,通过枚举
就是解密不直接通过算法解密,尝试生成很多的加密或对应明文的字符去枚举
传输数据编码
BASE64值是由数字“0-9”和字母“a-f”所组成的字符串,大小写敏感,通常结尾带有符号=
URL编码是由数组“0-9”和字母“a-f”所组成的字符串,大小写敏感,通常以%数字字母间隔
HEX编码是计算机中数据的一种表示方法,将数据进行十六进制转换,它由0-9,A-F,组成
ASCII编码是将128个字符进行进制数来表示,常见ASCII码表大小规则:0-9<A-F<a-z
举例:
个人博客-URL解码
国外WEB-BASE64解码
搜狐视频-BASE64解码
应用场景:参数传递(如注入影响),后期WAF绕过干扰写法应用,视频地址还原等
JS前端代码加密
JS颜文字 jother JSFUCK
颜文字特征:一堆颜文字构成的js代码,在F12中可直接解密执行
jother特征:只用!+()【】{}这八个字符就能完成对任意字符串的编码。也可在F12中解密执行
JSFUCK特征:与jother很像,只是少了{}
后端代码加密
PHP .NET JAVA
PHP:乱码,头部有信息
.NET:DLL封装代码文件
JAVA:JAR&CLASS文件
举例:Zend(一种加密方式) ILSpy(一种反编译工具,解码dll文件) IDEA
应用场景:版权代码加密,开发特性,CTF比赛等
数据库密文加密
MYSQL MSSQL等
数据显示编码
UTF-8 GBK2312等
代码加密目的:开发者开发出来的东西不希望别人偷走,后期绕过waf将写好的攻击代码加密从而绕过检查
演示案例
Web-ZZCMS-密文-MD5
在网站数据库中获取用户密码,这个密码大多数情况是加密的,需要解密才可以使用
Web-Discuz-密文-MD5&Salt
在MD5加密基础之上又进行了一次加密
Discus网站加密算法是:第一次md5加密后的值再加上盐值(salt)再进行md5,就是要得到的值
例:md5(md5(‘12345’).’d82a35),其中密码是12345,盐值是d82a35
盐值是有存储位置的,找到一样可以继续解密
系统-Windows-密文-NTLM&HASH
综合-参数-密文传输-AES&BASE64
网站一些东西会加密
CTF赛题-buuoj-single dog-JS颜文字
buu上的一道题,图片隐写+解密
CTF赛题-xuenixiang-Jsfuck-JSFUCK
其他资料
2.CTF中常见密码题解密网站总结(建议收藏)
https://blog.csdn.net/qq_41638851/article/details/100526839
3.CTF密码学常见加密解密总结(建议收藏)
https://blog.csdn.net/qq_40837276/article/details/83080460
部分解密平台:
https://www.cmd5.com
http://tmxk.org/jother
http://www.jsfuck.com
http://www.hiencode.com
http://tool.chacuo.net/cryptaes
https://utf-8.jp/public/aaencode.html
第5天:资产架构_端口_应用_CDN_WAF_站库分离_负载均衡
资产架构
一个网站两个程序,任何一个程序出现漏洞,都可以进入安全测试
WEB多个目录源码安全
bss.xiaodi8.com dz论坛
bss.xoapdi8.com wp程序
WEB多个端口源码安全
bss.xiaodi8.com dz论坛
bss.xiaodi8.com:8081 zblog程序
服务器架设多个站点安全
bss.xiaodi8.com 47.242.117.23
edu.xiaodi78.com 47.242.117.23
给到你的目标bss.xiaodi8.com 尝试对服务下edu.xiaodi78.com进行安全测试
架设第三方插件接口安全
web源码插件
web应用
eg: phpmyadmin 便于管理数据库,有些网站即使有账密一不一定登上去因为限制登录ip,这个插件就解决了外部登录不进去的问题,同时攻击者如果知道了账密就也可以登录
方便了管理人员管理数据库
也方便了攻击者进行攻击数据库
架设应用安全
服务器应用 ftp
方便管理人员进行文件操作
也方便了攻击者进行攻击FTP协议服务
信息收集就是收集这些东西,取得网站的情况决定从哪里入手
番外安全
基于域名解析安全
服务器和域名的购买地址不一定是同一地方
如果知道域名的注册商,可以尝试爆破管理域名的管理平台(不是工具是猜测账密),咋猜?之前讲过社工。
登录成功可以将域名解析改成其他ip,这叫域名劫持
基于服务器本身安全
攻击者知道了服务器的账密信息,连接登录
基于服务商安全
如阿里云,知道账密登录
或者找回密码,对应邮箱,看邮箱有没有弱口令,尝试修改密码
基于个人的安全
针对一个人,(感觉像诈骗)迪总举例是伪装学员问题然后发了一个马,获取各种信息(包括一些网站的账密)登录后修改,这也算攻击
阻碍考虑
站库分离
字面意思,数据库不在网站上而在其他的ip
CDN加速服务
和科学上网类似,给站点加节点,用户访问时候访问离用户最近的节点来达到加速的目的
对于目的站点来说,这些节点是缓存,攻击者攻击缓存对网站是没有影响的
负载均衡服务
备用服务器,用于防止主控服务器崩溃等突发情况
攻击到备用服务器,不一定能达到攻击者想要的目的
备用服务器也是使用的不是说等主服务器坏了再去用
和cdn相似
waf应用防火墙
这个就是单纯用于防止攻击的了,建立防火墙
主机防火墙
杀毒软件算
第6天:信息打点-Web架构篇_域名_语言_中间件_数据库_系统_源码获取
知识点
打点是红队的用词,意思大概是信息搜集
打点-Web架构-语言&中间件&数据库&系统等
打点-Web源码-CMS开源&闭源售卖&自主研发等
打点-Web源码获取-泄露安全&资源监控&其他等
打点-Web域名-子域名&相似域名&反查域名&旁注等
反查ip:通过ip查找域名
信息点
基础信息,系统信息,应用信息,防护信息,人员信息,其他信息等
技术点
CMS识别,端口扫描,CDN绕过,源码获取,子域名查询,WAF识别,负载均衡识别等
演示案例
- 信息打点-个人博客-XIAODI8-架构&源码
通过浏览器抓包发现使用apache中间件php语言以及zblog开源项目搭建的这个网站
分辨操作系统:

这里将id改成iD,如果访问正常则为Windows不正常为Linux,原因是Windows对大小写不是很敏感就是说大写小写对应的都是一个文件,而Linux是敏感的,大小写分别对应的是两个文件
但是这不是绝对的

在这样的文件下修改就分辨不出来了
还有一种判断方法是用ping命令观察TTL值的大小,这个需要去网上搜索有关TTL值判断操作系统的文章,一般接近哪个操作系统就是哪个。

上面的www.xiaodi8.com是windows操作系统服务器部署的,下面的是Linux服务器部署的
数据库和中间件可以用搭建组合或端口扫描的方式知道目标网站使用了哪一种
搭建组合指的是根据语言看哪种数据库与之配合使用
端口扫描值一些数据库和中间件会开放一些特定端口
MySQL 3306
mssql 1433
oracle 1521
redis 6379
…
有很多这可以需要的时候去网上查
在扫描作src挖洞的时候要注意有些目标禁止主动式扫描,可能会有大量流量造成网站堵塞
看到相关规则时注意规避,防止进去喝茶
主动式:从本机出发发送流量探测目标的信息
被动式:借助网站上的接口查询
可以使用网上的一些网站扫描网站工具去扫描目标网站,这也不一定安全
利用源码可以去公开的漏洞库尝试安全测试或者白盒代码审计挖漏洞
数据库也有对应的漏洞
信息打点-某违法APP-面具约会-架构&源码
抓包后,用php语言编写
这些黑暗一点的软件,就需要去黑一点的地方(bing、fofa)去搜源码
信息打点-某违法应用-爱心工程-架构&域名
通过网站信息找到公司,在通过公司搜索域名注册信息去看该网站的其他的域名,或者通过查找备案查找其他的域名,这样能搜集的信息会更多,这里的信息指的是之前说的源码中间件啥的
信息打点-某专属SRC-补天平台-架构&域名
补天是一个漏洞挖掘”悬赏“的网站我觉得,并且上面的网站都是那种防护比较高的,比较大的网站
这里用端口扫描就没有扫到数据库的开放端口,可能是站库分离,也可能是工具没扫成功,再就是网站设置了防火墙之类
抓包后没有什么有用的东西,找到JSP3/2.0.12这个不知道是啥的东西,搜索之后知道和Java有关
端口扫描应该不会奏效,因为这种大型的网站会使用CDN,你扫的是你附近的节点的服务器,最好是找真实ip扫
源码也大概率是自己研发的,找不到
第7天:信息打点-资产泄漏_CMS识别_Git监控_SVN_DS_Store_备份
相关利用项目
CMS识别:https://www.yunsee.cn
备份:敏感目录文件扫描-7kbscan-WebPathBrute
CVS:https://github.com/kost/dvcs-ripper
GIT:https://github.com/lijiejie/GitHack
SVN:https://github.com/callmefeifei/SvnHack
DS_Store:https://github.com/lijiejie/ds_store_exp
案例演示
工具在上面
参考文章
常见的Web源码泄漏漏洞及其利用 - SecPulse.COM | 安全脉搏
直接获取-CMS识别-云悉指纹识别平台
yunsee.cn一个cms识别平台,需要花钱,需要申请
以下为识别不到的情况
习惯不好-备份文件-某黑阔博客源码泄露
在网站下备份源码,直接在该目录下压缩文件的话,用户是可以通过网站下载到的,所以备份源码不要存放在网站目录下
配置不当-GIT泄露-某程序员博客源码泄露
程序员在做项目开发的时候为了防止源代码误删,会将其备份到github上,在使用git init命令初始化的时候会创建一个.git的隐藏目录,如果他没有删除,攻击者可以通过gitahck工具获取到项目源码
需要在python2环境下使用,听说python3也有
环境变量是python3的,可以下载python2,然后再python2的文件夹下cmd,再用该目录的python.exe来使用该工具
使用方法去搜索吧
配置不当-SVN泄露-某国外小伙子源码泄露
与.git泄露相同,文件不同而已
配置不当-DS_Store泄露-某开发Mac源码泄露
PHP特性-composer.json泄露-某直接搭建源码泄露
经查找资料: composer.json文件是PHP项目的核心配置,用于描述依赖关系和自动加载规则。通过Composer工具,它可以管理项目的依赖,下载包并生成自动加载代码,提高开发效率和可维护性。require和require-dev定义不同类型的依赖,autoload配置类文件的自动加载。
了解到该文件为一种配置说明文件,访问该文件可以知道网站搭建的使用的各种配置
下载配置-WEB-INF泄露-RoarCTF-2019-EasyJava
ctf赛题会有些用,但是使用条件是要和其他漏洞配合,条件苛刻,而且可以直接从其他漏洞入手
资源监控-GITHUB泄露-语法搜索&关键字搜索&社工
没看明白,到github上搜索名字,域名,
第8天:信息打点-系统篇_端口扫描_CDN服务_负载均衡_WAF防火墙
知识点
获取网络信息-服务厂商&网络架构
对于网络架构:用户访问网站访问的是外网ip,服务端可能是一个外网ip然后又有一个内网,在外网服务器上设置一个代理使访问走向要访问的内网数据,这时候安全测试进行探针扫描只能扫描到外网的ip而其内部设置的内网是扫描不到的
对于这种web服务我们是扫描不到的
获取服务信息-应用协议&内网资产
应用协议用nmap、masscan、平台扫描
获取阻碍信息-CDN&WAF&负载&防火墙
CDN之前讲过,识别方法:超级ping(一个网站)
WAF也说过,各家厂商有各家的产品
WAF不是都能绕的,有一些产品要是谁都能绕那还收啥钱了
识别方式:
- 看图识别,访问会提示访问被拦截之类的弹窗
- 工具:wafw00f (只能识别主流的waf,对于自研开发的产品是识别不到的)
负载均衡 有扫描工具ldb
防火墙用nmap
端口扫描工具:nmap(kali自带的)
旁注:同服务器下面的不同WEB应用查询技术,一个服务器下设多个网站,目标网站没有攻击头绪可以试试该服务器下其他的网站
c段:目标ip没有可用信息,扫描其他的ip(192.168.2.0/24这种),但是对于是自己购买的ip我认为应该是没啥用
第9天:信息打点-CDN绕过篇_漏洞回链_接口探针_全网扫描_反向邮件
知识点
CDN知识-工作原理及阻碍
CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
类似迅雷的下载
CDN配置-域名&区域&类型、
阿里云上有配置cdn的地方
配置1:加速域名-需要启用加速的域名
配置2:加速区域-需要启用加速的地区
配置3:加速类型-需要启用加速的资源
资源指的是网站上的文字、视频、图片、文件等
CDN绕过-靠谱十余种战技战法
https://zhuanlan.zhihu.com/p/33440472
子域名绕过:如果目标域名只加速www这个子域名,可以尝试其他子域名,一般子域名极有可能和主站保持同一IP
CDN绑定-HOST绑定指向访问
修改C:\Windows\System32\drivers\etc目录下hosts文件,将找到的真实ip和域名绑定,这样在做安全测试的时候流量就会走向真实的ip
上面是windows的Linux是/etc/hosts
前置知识
- 传统访问:用户访问域名->解析服务器ip->访问目标主机
- 普通CDN:用户访问域名->CDN节点->真实服务器IP->访问目标主机
- 带WAF的CDN:用户访问域名->CDN节点(WAF)->真是服务器IP->访问目标主机
演示案例
漏洞&遗留文件
phpinfo.php是一个php调试文件(正常好像是删掉的),里面会有域名绑定的ip(不一定,也可能会是内网的ip,当他有多个网卡时)
ssrf漏洞:不知道这个漏洞是啥先放一放,知道这个是一个
www.yansiqi.com ssrf漏洞(会接受用户的数据并利用服务器去请求)
你在自己的服务器上开一个web服务,记录日志
漏洞去请求47.94.236.117 日志就会记录访问的ip
就可以获得该网站的真实ip
和第一节课说的防火墙的正向反向类似,让目标网站来找你。
子域名查询操作
接口查询国外访问
国外访问用https://tools.ipip.net/cdn.php
一些偏的国家,互联网不发达的国家,网站不需要在此处设置CDN,所以从这里访问网站可以ping出真实ip
主动邮件配合备案
案例网站:www.mozhe.cn
一般网站不会给自己的邮箱开CDN,那是内部人员通讯用的。所以让他给你发邮件可能会暴漏他的真实ip,在用户注册,密码找回,身份验证等情况会接到该网站的邮件
忘记密码,输入邮箱并让其发送邮件,查看原文件就是邮件源代码
received后面有来自发送方的信息
有一个国外用来找真实ip的工具https://get-site-ip.com/#google_vignette结果不包真
可以搜索该ip看归属厂商,如果是阿里云的话可能就是节点
还可以看归属地,一般网站会有备案的信息上面有备案所属地
也有特殊的,子域名的归属地和主站不一样
全网扫描FuckCDN
第10天:信息打点-APP_小程序篇_抓包封包_XP框架_反编译_资产提取
知识点
- 小程序-外在-资产收集
- APP-外在&内在-资产收集
演示案例
APP-外在抓包-Fd&茶杯&Burp
APP-外在封包-封包监听工具
APP-内在提取-AppInfoScanner
使用方式到github上搜AppInfoScanner,readme后面有点知识点
APP-资源提取-反编译载入IDEA
APP-框架使用-Xposed&JustTrustMe
壳:保护文件的东西,要反编译逆向就需要先脱壳
小程序-微信-电脑版登录启动抓包分析
没啥记的,复现也复现不了,代码啥的也看不明白,等学完php开发之后再跟着复现试试
APP安卓入手
1、外在-抓包封包-资产安全测试
资产收集-资源提取-ICO、MD5-黑暗引擎搜索相关资产
1.1、外在-功能逻辑-
2、 内在-反编译-JAVA代码-代码审计
2.1、内在-反编译-提取RES资源-黑暗资产收集
第11天:信息打点-红队工具篇_Fofa_Quake_Kunyu_Suize水泽_Arl灯塔
知识点
- 网络空间四大引擎-Fofa&Quake&Shadan&Zoomeye
- 自动化信息收集项目-ARL灯塔&Suize水泽&Kunyu坤舆
- 单点功能信息收集项目-企查&子域名&指纹识别&社工信息
黑暗引擎:
用于搜索
关联资产-特征资产-资产信息
演示案例
- 网络空间-Fofa&Quake&Shadan&Zoomeye
- 工具测评-网络空间-四大黑暗引擎集合版项目
- 工具测评-自动化收集-ARL灯塔&Suize水泽&Kunyu
- 工具测评-单点功能器-企查&子域名&指纹识别&社工
工具下载地址:推荐水泽
坤舆:https://github.com/knownsec/Kunyu
水泽:https://github.com/0x727/ShuiZe_0x727
灯塔:https://github.com/Aabyss-Team/ARL?tab=readme-ov-file(官方的没了)
灯塔有一个监控功能

实时监控设定的关键词,绑定邮箱、钉钉提醒
第12天:PHP开发-个人博客项目_文章功能显示_数据库操作_数据接受
案例演示
小迪博客-文章阅读功能初步实现
实现功能:
前端文章导航,点入内容显示,更改ID显示不同内容
实现步骤:
- 前端页面显示编写-HTML&CSS
- 数据库文章数据导入-MYSQL操作
- PHP操作MYSQL编写-PHP变量提交
php语言的一些语法
编写php代码用phpstom打开文件
php代码要用这个包起来
1 |
1 | $conn=mysqli_connect('localhost','root','root');//连接数据库,句柄赋值给conn,目的是当连接多个数据库时便于区分数据库,后面还要用数据库中的表 |
每一次在使用数据库的东西都要这样写很麻烦,所以我们在配置文件中配置好数据库与页面的连接
然后在使用它的地方include配置文件
1 | config.php文件 |
中间没有做注释的看不懂的代码是sql语句,后面说
这里可以得到:配置文件里有数据库的账号密码,如果该文件泄露,就可以获取数据库账密
想要显示指定内容,需要做如下修改
1 | include("config/config.php"); |
网页端的请求也要修改,url要传参数

这里引出一个web漏洞,sql注入,就是在传参的时候不做检查,直接使用传进来的参数就可能执行恶意指令
比如这样
1 | 正常期望的sql指令 |
GET请求和POST请求
新建一个test.php文件
1 | <?php |
浏览器输入http://localhost/blog/test.php?x=1能显示1

但是输入http://localhost/blog/test.php?x=1&y=2只能显示1不能显示2

这是因为x用的GET请求只要url有参数就能接收,而POST请求则必须发送的方式也是POST才能传参成功
利用渗透版火狐修改传参方式

通过浏览器抓包发现传参方式为POST

1 | HTML代码: |
注:heml代码中可以插入php代码,php代码中也可插入html代码
1 | html代码 |
补一些基础知识
1 | 单引号和双引号区别: |

MYSQL相关
查询:selete
删除: delete
插入/增加: insert
更新: update
小结:
数据库操作类的代码
文件上传
文件下载
项目一:个人博客
文章阅读
会员中心
模板引入
留言板
后台:
登录验证
文章添加
配置修改
等
找漏洞要从网站功能实现处入手,每一个功能实现都会有一些脆弱点
第13天:PHP开发-个人博客项目_文件操作类_编辑器_上传下载删除读写
字写代码验证上传
验证核心在代码里
引用外部编辑器实现
验证核心在编辑器里
引用开发框架实现
验证核心在框架
文件上传
下面是文件上传的一种html写法
1 | <form action="/upload" method="post" enctype="multipart/form-data">//action是将上传来的文件交由谁处理,如果为空则是当前文件自己处理 |
php处理代码
1 | //获取文件的名字 |

将上传的文件移动到指定位置
1 | if(!move_uploaded_file($tmpname,'../upload/'.$name)){//第一个参数是文件名,第二个是移动路径 |

可以限制文件的格式
1 | if($type=='image/jpeg') { |

编辑器引用文件上传
html文件
1 | <h1>编辑器引用上传</h1> |

当使用编辑器引用文件上传,此时的过滤就由编辑器处理了
文件下载
1 | //获取文件列表函数 |
下面这个函数是不起作用的,但是有些知识点是需要记的
是起作用的,一开始是写错了http,多写了一个s
1 | //直连下载函数 |
1 | //文件传参下载 |

第一种下载直连下载的下载链接是http://localhost/blog/file/soft/xingtu.exe
第二种下载传参下载的下载链接是http://localhost/blog/file/file-down.php,文件是作为参数传过去的
相比而言,直连下载更安全,因为它会检测下载的文件类型,比如你要下载一个php文件它就不会下载而是去执行该文件,过滤是由那些中间件处理的。
传参下载将参数修改有可能php文件也可以下载,比如说把下面的软件.zip改成1.php
//http:www.xiaodi.com/soft/down.php?filename=软件.zip
这就造成源码泄露
看是哪种下载,可以右键复制下载链接,粘贴到地址栏查看
文件删除
1 | file-del.php |
删除函数就俩,写这个目的是注意在写删除文件的时候小心任意文件删除,要是源码被删网站就崩了

有报错是因为此时传入参数为空
输入删除2.txt,刷新后

这时2.txt就被删除了,此时报错是因为参数还是2.txt
删除时候注意点,不能恢复的
文件操作
分读取和写入两种
1 | //读取函数 |

写入2.txt

此时就有2.txt了

不粘图了
由以上功能引出的web漏洞
核心:
- 可控变量
- 特定函数-函数的多样化
总体来说就是有功能就有对应的功能函数也就是特定函数,如果可以控制这些特定函数的参数就能实现漏洞的利用也就是可控变量
文件包含漏洞:
包含即执行!!
这是1.txt还有文件的结构

这是file-include.php文件的内容

看到file-include.php中包含了1.txt
我们分别访问两个文件


发现即使1.txt不是php文件仍然被当作脚本执行了,这就是文件包含,包含即执行

如果这个包含是一个可控变量的话,那攻击方式就能想到了
防护方式:过滤包含的文件类型,包含文件时尽量写死呗
可以包含的文件函数不止一个
第14天:PHP开发-个人博客项目_输入输出类_留言板_访问IP_UA头_来源
搜索功能
1 | $sql="select * from sy_guestbook where gName lik '%$s%'" |
php代码
1 | <?php |
页面是这样的

正常期望的输入和结果

但是也可以这样子

回车之后

出现了一个弹窗
之前写的是javascript语言
检查代码可以发现这段查询字段被执行了

这个叫跨站攻击,(我理解的跨站是一个网站访问另一个网站所以有点搞不明白这里为啥叫跨站)
留言板功能
1 | <?php |
显示结果

不正常的留言
1 | <script>alert(1)</script> |
和之前一样会弹窗

这个和之前的区别是不论输入与否只要刷新就会弹窗
这是因为这条评论是保存在数据库中的,只要访问一次就会被当成代码执行一次
也是跨站攻击
这两种方式在XSS那里有名字分别是反射型和存储型
对于这种攻击的寻找方式:从能控制页面输出的地方入手,找输入输出(有框的地方都试试haha)
知识点
- PHP-全局变量$_SERVER
抓包测试
一
修改ua头
网站:https://ip.chinaz.com/ipbatch
火狐渗透版配置代理主机,插件也开着
burp配置代理,开启抓包,访问网站
正常访问此时显示的信息如图

抓包后修改ua头

放包之后

此时ua头就是修改后的123了
如果在这里写其他代码,不做过滤的情况
二
ip伪造
php中$_SERVER[“HTTP_X_FORWARDED_FOR”]属性用于接收ip信息,这个是可以伪造的
而有些不是用php写的,其他的服务器等直接走底层协议是不能伪造的
第15天:PHP开发-个人博客项目_登录验证_Cookie_Session_验证码安全
知识点
1、后台验证-登录用户逻辑安全
2、后台验证-COOKIE&SESSION
3、后台验证-验证码&万能密码等
登录
- 发送登录请求 (账号 密码)
- 接收账号密码
- 判断账号密码的准确性
正确 成功->跳转成功页面
错误 失败登录->重新登录
后台管理系统有多个文件页面(功能),为了方便验证,一般会选用cookie活session进行验证
为啥会方便验证->为啥验证
如果只是在登录的时候做一个验证的话,那你的其他的页面就不会进行检测就能使用,换句话说就是不登陆也可以使用,所以每一个页面都需要包含那个验证文件。但是如果每次访问页面都需要验证账号和密码又影星用户使用,所以就使用了cookie和session来帮助验证。
cookie:身份验证 存储到客户端浏览器内
cookie安全:cookie修改 伪造 盗取
session:身份验证 存储到服务端服务器内
session:会话劫持(session劫持)
这两个都是值,用来标识身份的
cookie验证
1 | login.php的php部分 |
第一次直接访问功能页面(如果之前登陆成功了可以清空浏览器缓存再来)

可以看到这里的验证是有效的
去登陆成功

代码中写的是登录成功会跳转到add_news.php
此时我们查看cookie

从这个引出一个cookie伪造,演员:熊海
配置熊海的网站,小皮创建新的站点,要勾选创建数据库然后跟着引导走就行了
配置好后,打开网站访问/install,填好信息提交之后等着配置
之后访问/admin会跳转到登录界面

用的是火狐渗透版,下面是访问的网址,上面是跳转的网址,这时如果r后面的login改为index就是后台的登录界面,当然此时是进不去的因为没有登录过,他还会跳转到登录的界面

此时就是进行抓包修改cookie来访问后台了
毕竟是带着答案去做题的,下面是伪造cookie的思路
先是源码:
打开admin/files下的index.php看到包含了一个检查登录的文件

打开该文件查看

跟我们写的潦草检查差不多,这里只是检查cookie中user是否为空,如果为空则跳转登录界面
所以抓包之后在cookie里加一个user,让user不为空就能绕,进行未授权访问
抓包后

根迪总的不太一样,这里连cookie都没有,但是试了一下加cookie也可。

放包之后

成功访问后台,但是每一步操作都需要抓包伪造cookie
cookie盗取则是通过(一般是xss)漏洞利用获取管理员的cookie
session验证
这是部分代码
1 | 检查的代码 |
session像是打电话,当会话结束之后这个session就失效了,而且这个session每次会话都是随机产生的,通过抓包没有发现写好的user=什么之类的

所以只有先获取session才能进行伪造,所以叫会话劫持而不是伪造
session有时效性(好像还挺短)关闭浏览器重新登录也会失效,并且是存储在服务器的不能通过xss之类盗取
所以遇到看到了像PHPSEEID、JSPSEEID就不要考虑用cookie伪造了
只能在session有效期内劫持会话
PHPSEEID是用session_start();//启动session创建的
后台验证-验证码&万能密码等
sql指令的一些知识
1 | select * from sy_adminuser where username='' or 1=1# and password='随便写' |
这句放在数据库里查询可以找到账密,解释
or(或),#(注释)
所以这句就是 假 或 真=》真,所以能查到
这时我在输入用户名处输入
1 | ' or 1=1# |
密码怎么输输不输都行


成功登录
网上说叫万能密码,利用的是sql注入
现在写的两个验证都有一个问题,就是不能防止爆破,需要加一个验证码的功能,这段就是直接复制粘贴
同样,验证码也可以绕过
验证码复用
通过抓包使用第一次成功的验证码,在burp中只修改密码


密码是错的,send返回包

再将密码改成正确的send一下

改好后放包

网上还有一些验证码插件可以识别图片中的文字
但是对于那些需要拖动的验证方式就不行了
第16天:PHP开发-个人博客项目_JS-Ajax_前端逻辑_购物_登录_上传
文件上传 - 类型 - 过滤
设计:通过JavaScript进行文件后缀筛选验证
对文件上传的后缀名进行验证,符合要求的才能上传
这个功能的实现可以由PHP或JS去实现
两种验证的区别:
PHP 验证的代码看不到 只能黑盒测试 后端 服务端
JS 验证的代码可以看到 白盒测试 前端 浏览器
这个服务端和浏览器是什么意思,指的是运行代码的位置
JS代码是能通过浏览器端绕过的,禁用JS,使js代码失效
浏览器禁用js代码的方法可以去搜索
状态回显 - 登录 - 状态码
设计:通过Ajax传递数据进行用户登录验证
好多代码看不懂
1 | login.php |
1 | ajax.php |
js ajax
请求->返回->读取返回的数据->JS ajax代码进行解析->结果
php
请求->返回-> 返回结果(修改后服务器不会理会)
理解:还是之前说的,js/ajax的代码处理结果到了浏览器端还是需要浏览器再处理,而这个再处理是可以被抓包修改的。
下面是修改的方法:
账密都是乱写的



此时返回的infocode一定是0

选了这个之后就也会发到“这里”,理解:把返回包也抓了
在Repeater界面send之后proxy放包,此时就抓的是返回包

将0改成1再放包


登录成功
ajax和js都是JavaScript的代码,ajax是其中用来发送数据的一种形式
当然并不是说所有的由js代码验证身份的都能绕过身份验证,要看验证之后的 代码是什么
如果之后是进入后台页面那么是可以的
参数修改 - 购物 - 参数修改
设计:通过 Ajax 传递数据进行购物验证
设计 1:商品价格以前端设置价格为准,数据接收价格后运算
和之前的登录类似,修改返回包,但是修改发送包中价格也可以达成购买成功的
代码
1 | shop.html |
设计 2:商品价格以数据库对应价格为准,数据接收价格后运算
这个和上面比差别是价格从数据库中提取
1 | shops1.php |
这时修改发送包价格同样还是可以影响结果的,因为这只是发送,处理还是在shops.php(理解:后端),就是计算是在接收价格和数量计算的,所以此时抓包修改价格,后端计算用的价格还是会修改。
设计 3:商品价格以数据库对应价格为准,数据只接受数量后运算
想要价格不被前端传过来的价格影响,就需要把后端的价格获取写死或从数据库中提取
此时修改数量是可以影响结果的
设计 4:商品价格以数据库对应价格为准,数据只接受数量后做过滤运算
这个设计规范价格从数据库提取,并对数据进行过滤(不可以是负数、小数之类)
这四种设计都可以通过修改返回包的0为1(状态码infocode)
很混乱
对于抓包返回包中有json code msgbox等字样,大概率是通过js发送信息
第17天:PHP开发-个人博客项目_TP框架_路由访问_安全写法_历史漏洞
下载后用小皮配置网站,将网站根目录修改为public文件夹
网站的首页写在controler文件里
开发手册写:
1 | http://serverName/index.php(或者其它应用入口文件)/模块/控制器/操作/[参数名/参数值 |
可以通过地址访问对应的函数
在该文件里写了xiaodi函数,访问之后

在Controller目录下创建新文件时注意第一个字母要大写
格式
1 | <?php |
传参数的
1 | <?php |
url:http://tp:8082/index.php/index/xiaodi/y?x=1
1 | public function y(){ |
这种的传参方式是这样的url:http://tp:8082/index.php/index/xiaodi/y/x/1或者http://tp:8082/index.php/index/xiaodi/y/x=1
手册里写的是:
1 | input('?get.id');//get传参 |
如果没写传参方式就都接受
讲这个,是为了以后遇到这种使用tp的网站可以了解网站的文件结构
1 | tp官方数据库写法 |
对于一些程序,你如果看到了使用tp框架编写的并且按照开发文档写的,挖它的漏洞就等于是挖tp的漏洞
遇到就放弃吧
用tp框架找漏洞
看写法(语法是否是按照官方写的)
历史漏洞,对应版本有对应的漏洞
这个是一个专门收集thinkphp框架漏洞的项目https://github.com/Mochazz/ThinkPHP-Vuln
白盒测试:看源码版本号在thinkphp目录下的base.php里(并不是都在这里,找不到的时候就全局搜索,ctrl+shift+f,搜索词:THINK_VERSION)
黑盒测试:判断是不是tp 看返回数据包、报错提示
经验:看URL地址
对于历史漏洞,还要看它有没有修复
挖洞注意守法,挖出来个人是不能公开的要上报