天气变冷了,但对于渗透测试行业的热度高于天气的温度,说明全国互联网针对网站安全问题的重视性越来越高,对此我们专业的网站安全公司Sine安全对渗透测试的知识必知点详情的给大家讲解一下,对今后网站或APP的安全性提高有着特别大的作用,只有这样才能使网站和app走的更加长远稳定发展。
2. 持久化 – Windows
2.1. 隐藏文件
- 创建系统隐藏文件
- attrib +s +a +r +h filename / attrib +s +h filename
- 利用NTFS ADS (Alternate Data Streams) 创建隐藏文件
- 利用Windows保留字
- aux|prn|con|nul|com1|com2|com3|com4|com5|com6|com7|com8|com9|lpt1|lpt2|lpt3|lpt4|lpt5|lpt6|lpt7|lpt8|lpt9
2.2. UAC
2.2.1. 简介
UAC (User Account Control) 是Windows的一个安全机制,当一些敏感操作发生时,会跳出提示显式要求系统权限。
当用户登陆Windows时,每个用户都会被授予一个access token,这个token中有security identifier (SID) 的信息,决定了用户的权限。
2.2.2. 会触发UAC的操作
- 以管理员权限启动应用
- 修改系统、UAC设置
- 修改没有权限的文件或者目录( %SystemRoot% / %ProgramFiles% 等 )
- 修改ACL (access control list) 安装驱动
- 增删账户,修改账户类型,激活来宾账户
2.3. 权限提升
权限提升有多重方式,有利用二进制漏洞、逻辑漏洞等技巧。利用二进制漏洞获取权限的方式是利用运行在内核态中的漏洞来执行代码。比如内核、驱动中的UAF或者其他类似的漏洞,以获得较高的权限。
逻辑漏洞主要是利用系统的一些逻辑存在问题的机制,比如有些文件夹用户可以写入,但是会以管理员权限启动。
2.3.1. 任意写文件利用
在Windows中用户可以写的敏感位置主要有以下这些
- 用户自身的文件和目录,包括 AppData Temp
- C:\ ,默认情况下用户可以写入
- C:\ProgramData 的子目录,默认情况下用户可以创建文件夹、写入文件
- C:\Windows\Temp 的子目录,默认情况下用户可以创建文件夹、写入文件
具体的ACL信息可用AccessChk, 或者PowerShell的 Get-Acl 命令查看。
可以利用对这些文件夹及其子目录的写权限,写入一些可能会被加载的dll,利用dll的加载执行来获取权限。
2.3.2. MOF
MOF是Windows系统的一个文件( c:/windows/system32/wbem/mof/nullevt.mof )叫做”托管对象格式”,其作用是每隔五秒就会去监控进程创建和死亡。
当拥有文件上传的权限但是没有Shell时,可以上传定制的mof文件至相应的位置,一定时间后这个mof就会被执行。
一般会采用在mof中加入一段添加管理员用户的命令的vbs脚本,当执行后就拥有了新的管理员账户。
2.3.3. sethc
sethc.exe 是 Windows系统在用户按下五次shift后调用的粘滞键处理程序,当有写文件但是没有执行权限时,可以通过替换 sethc.exe 的方式留下后门,在密码输入页面输入五次shift即可获得权限。
2.3.4. 凭证窃取
- Windows本地密码散列导出工具
- mimikatz
- wce
- gsecdump
- copypwd
- Pwdump
- Windows本地密码破解工具
- L0phtCrack
- SAMInside
- Ophcrack
- 彩虹表破解
- 本机hash+明文抓取
- win8+win2012明文抓取
- ntds.dit的导出+QuarkPwDump读取分析
- vssown.vbs + libesedb + NtdsXtract
- ntdsdump
- 利用powershell(DSInternals)分析hash
- 使用 net use \\%computername% /u:%username% 重置密码尝试次数
2.3.5. 其他
- 组策略首选项漏洞
- DLL劫持
- 替换系统工具,实现后门
Linux信息收集
3. 信息收集 – Linux
3.1. 获取内核,操作系统和设备信息
- 版本信息
- uname -a 所有版本
- uname -r 内核版本信息
- uname -n 系统主机名字
- uname -m Linux
- 内核架构 内核信息 cat /proc/version
- CPU信息 cat /proc/cpuinfo
- 发布信息
- cat /etc/*-release
- cat /etc/issue
- 主机名 hostname
- 文件系统 df -a
3.2. 用户和组
- 列出系统所有用户 cat /etc/passwd
- 列出系统所有组 cat /etc/group
- 列出所有用户hash(root)“cat /etc/shadow“
- 用户
- 查询用户的基本信息 finger
- 当前登录的用户 users who -a
- 目前登录的用户 w
- 登入过的用户信息 last
- 显示系统中所有用户最近一次登录信息 lastlog
3.3. 用户和权限信息
当前用户 whoami
- 当前用户信息 id
- 可以使用sudo提升到root的用户(root) cat /etc/sudoers
- 列出目前用户可执行与无法执行的指令 sudo -l
3.4. 环境信息
- 打印系统环境信息 env
- 打印系统环境信息 set
- 环境变量中的路径信息 echo $PATH
- 打印历史命令 history
- 显示当前路径 pwd
- 显示默认系统遍历 cat /etc/profile
- 显示可用的shell cat /etc/shells
3.5. 服务信息
- 查看进程信息 ps aux
- 由inetd管理的服务列表 cat /etc/inetd.conf
- 由xinetd管理的服务列表 cat /etc/xinetd.conf
- nfs服务器的配置 cat /etc/exports
3.6. 作业和任务
- 显示指定用户的计划作业(root) crontab -l -u %user%
- 计划任务 ls -la /etc/cron*
3.7. 网络、路由和通信
- 列出网络接口信息 /sbin/ifconfig -a
- 列出网络接口信息 cat /etc/network/interfaces
- 查看系统arp表 arp -a
- 打印路由信息 route
- 查看dns配置信息 cat /etc/resolv.conf
- 打印本地端口开放信息 netstat -an
- 列出iptable的配置规则 iptables -L
- 查看端口服务映射 cat /etc/services
- 以上这些都是一些渗透测试中所需知的知识点,大家可以根据这些点去自行分析和检索信息,如果对此有需要安全渗透测试的朋友可以联系专业的网站安全公司来处理,国内推荐Sinesafe,绿盟,启明星辰等等都是比较不错的,渗透测试服务中必须要有正规的授权书才能进行测试,不得非法测试!