拿到目标站以后的渗透思路?
渗透测试流程:
- 项目前期准备工作
- 信息收集:whois、网站源IP、开放端口、旁站、C段网站、服务器系统版本、容器版本、程序版本、数据库类型、二级域名、防火墙WAF
- 自动化漏洞扫描:Nessus, AWVS,XRAY
- 手动挖掘:逻辑漏洞
- 验证漏洞
- 修复建议
- (如果有)基线检查/复验漏洞
- 输出报告
如何绕过CDN查真实IP?
- 多地ping看是否有cdn(基本上非洲的那些ping就是真的了)
- 邮件订阅或者rss订阅(QQ邮箱的ip溯源)
- 二级域名可能不会做cdn
- nslookup http://xxx.com 国外dns
sleep函数被禁用后怎么进行sql注入?
BENCHMARK,Get_lock函数,当都被禁用后可以用计算量比较大的语句(例如MD5)使数据库查询时间变长,从而达到延时注入的效果。
AND (SELECT count(*) FROM information_schema.columns A,information_schema.columns B, information_schema.SCHEMATA C);
哪些地方存在xxe?架构问题?
xxe常见场景
pdf在线解析、word在线解析、定制协议,留言板等,跟逻辑设计有关而与语言无关,最好是不要让XML作为参数传输或整体结构可被用户篡改。如果一定要使用,至少要禁用DTD、Entity。
xxe危害
读取本地文件,执行系统命令,探测内网端口,攻击内网服务
探测内网端口的协议有gopher file dict,不同语言支持不同的协议,是具体情况而定,file http ftp是常用的
防范
python用lxml时可以对resolve_entities设为false。或者过滤用户提交的xml
客户端也可以有xxe攻击,有的网站会使用office打开docx进行解析
Java解析XML的常用三方库,如果不禁用DTD、Entity都会导致XXE漏洞:
javax.xml.stream.XMLStreamReader;
javax.xml.parsers.DocumentBuilderFactory;
如何绕过Http-only?
HTTP-Only禁止的是JS读取cookie信息,Http Trace攻击就可以将你的Header里的Cookie回显出来,利用Ajax或者flash就可以完成这种攻击;或者配置或者应用程序上可能Bypass,比如header头的泄露
SQL二次注入?
第一次进行数据库插入数据的时候,仅仅只是使用了addslashes
或者是借助get_magic_quotes_gpc
对其中的特殊字符进行了转义,在写入数据库的时候还是保留了
原来的数据,但是数据本身还是脏数据。
在将数据存入到了数据库中之后,开发者就认为数据是可信的。在下一次进行需要进行查询的时候,直接从数据库中取出了脏数据,没有进行进一步的检验和处理,这样就会造成SQL的二次注入。
一些交友网站,填写年龄处是一个注入点,页面会显示出与你相同年龄的用户有几个。使用and 1=1确定注入点,用order by探测列数,union select探测输出点是第几列,
- 爆库
group_concat(schema_name) from information_schema.schemata
- 爆表
group_concat(table_name) from information_schema.schemata where table_schema='hhh'
- 获取数据
concat(flag) from flag
修复:在从数据库或文件中取数据的时候,也要进行转义或者过滤。
SQLserver提权?
xp_cmdshell提权
xp_cmdshell是Sql Server中的一个组件,可以用来执行系统命令,在拿到sa口令之后,经常可以通过xp_cmdshell来进行提权
前提:
getshell或者存在sql注入并且能够执行命令。
sql server是system权限,sql server默认就是system权限
sp_oacreate提权
在xp_cmdshell被删除或者出错情况下,可以充分利用SP_OACreate进行提权
前提:
需要同时具备sp_oacreate和sp_oamethod两个功能组件
GPC是什么?GPC之后怎么绕过?
如果magic_quotes_gpc=On
,PHP解析器就会自动为post、get、cookie过来的数据增加转义字符“\”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符(认为是php的字符)引起的污染
如何防范webshell?
防范的措施大概有三种:
- 将专门存放上传文件的文件夹里面的脚本类型文件,解析成其他类型的文件,服务器不会以脚本类型来执行它。
- 匹配文件夹里的脚本类型文件,将其设置为无法读取及操作。
- 将文件上传到一个单独的文件夹,给一个二级的域名,然后不给这个虚拟站点解析脚本的权限,听说很多网站都用这种方式。
- 干脆只能局域网访问,做个隔离谁都看不到
webshell检查思路?
首先,通过浏览器以HTTP协议访问Web Server上的一个CGI文件,是一个合法的TCP连接,TCP/IP的应用层之下没有任何特征,只能在应用层进行检测。
黑客不管是传文件还是改文件,必然有一个文件会包含webshell代码,很容易想到从文件代码入手,这是静态特征检测。
webshell运行后,B/S数据通过HTTP交互,HTTP请求/响应中可以找到蛛丝马迹,这是动态特征检测。
【静态检测】
静态检测通过匹配特征码,特征值,危险函数函数来查找webshell的方法。
优点是快速方便,对已知的webshell查找准确率高,部署方便。
缺点漏报率、误报率高,无法查找0day型webshell,而且容易被绕过。
【静态检测配合人工】
一个检查工具 https://github.com/he1m4n6a/findWebshell
【动态检测】
Linux下就是nobody用户起了bash,Win下就是IIS User启动cmd,这些都是动态特征。
如果黑客反向连接的话,那很更容易检测了,Agent和IDS都可以抓现行。
Webshell总有一个HTTP请求,如果我在网络层监控HTTP,并且检测到有人访问了一个从没反问过得文件,而且返回了200,则很容易定位到webshell,这便是http异常模型检测,就和检测文件变化一样,如果非管理员新增文件,则说明被人入侵了。
缺点也很明显,黑客只要利用原文件就很轻易绕过了,并且部署代价高,网站时常更新的话规则也要不断添加。
【日志检测】
使用Webshell一般不会在系统日志中留下记录,但是会在网站的web日志中留下Webshell页
面的访问数据和数据提交记录。
日志分析检测技术通过大量的日志文件建立请求模型从而检测出异常文件,称之为:HTTP异常请求模型检测
【寻找webshell】
1.自动化查找:D盾 河马 fotify
2.手动查找:windows sublime 全文件夹查找 IDE PHPSTORM 全局查找
Linux 命令查找 grep -rn "eval(" *
webshell特征 PHP的危险函数
还有phar <?php XXXXX
见过哪些登录页面的漏洞?
注入点以及万能密码(分jsp,php等页面的万能密码)
敏感信息泄露(未授权,文件路径)
越权漏洞(多是框架编写问题)
验证码绕过
无限注册帐号
任意密码重置
明文传输
如何快速判定XSS类型?
存储型XSS:
你发送一次带XSS代码的请求,以后这个页面的返回包里都会有XSS代码;
反射型XSS:
你发送一次带XSS代码的请求,只能在当前返回的数据包中发现XSS代码;
DOM型XSS:
你发送一次带XSS代码的请求,在返回包里压根儿就找不到XSS代码的影子;
CSP策略:浏览器内容安全策略,减少xss攻击。
CSRF、SSRF和重放攻击有什么区别?
- CSRF是跨站请求伪造攻击,由客户端发起
- SSRF是服务器端请求伪造,由服务器发起
- 重放攻击是将截获的数据包进行重放,达到身份认证等目的
CSRF 和 XSS 和 XXE 有什么区别,以及修复方式?
- XSS是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。
修复方式:对字符实体进行转义、使用HTTP Only来禁止JavaScript读取Cookie值、输入时校验、浏览器与Web应用端采用相同的字符编码。
2. CSRF是跨站请求伪造攻击,XSS是实现CSRF的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。
修复方式:筛选出需要防范CSRF的页面然后嵌入Token、再次输入密码、检验Referer.
3. XXE是XML外部实体注入攻击,XML中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。
修复方式:XML解析库在调用时严格禁止对外部实体的解析。
mysql的网站,5.0以上和5.0以下有什么区别?
5.0以下没有information_schema这个系统表,无法列表名等,只能暴力跑表名。
5.0以下是多用户单操作,5.0以上是多用户多操作
关于MySQL写shell的问题
妈了个逼的怎么这么喜欢问这方面的东西
1.写shell用什么函数?
select '<?php phpinfo()> into outfile 'D:/shelltest.php'
dumpfile
file_put_contents
2.outfile不能用了怎么办?select unhex('udf.dll hex code') intodumpfile 'c:/mysql/mysql server 5.1/lib/plugin/xxoo.dll';
这样子可以UDF提权
3.dumpfile和outfile有什么不一样?
outfile适合导库,在行末尾会写入新行并转义,因此不能写入二进制可执行文件。
4.sleep()能不能写shell?
SLEEP()函数本身并不能获取shell,但是可以联动其它漏洞获取shell
5.写shell的条件?
- 用户权限
- 目录读写权限
- 防止命令执行:
disable_functions
,禁止了disable_functions=phpinfo,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
,但是可以用dl扩展执行命令或者ImageMagick漏洞
其中open_basedir
: 将用户可操作的文件限制在某目录下
6.mysql写shell的条件?
- 网站可访问路径的绝对路径
- secure_file_priv 的值非NULL或包含了导出的绝对路径
- mysql服务有对网站可访问路径的写权限
- mysql连接用户有FILE权限/ROOT用户或ROOT权限
- GPC关闭//未对闭合用的引号转义
secure_file_priv的值在mysql配置文件my.ini中设置,这个参数用来限制数据导入导出
Mysql>=5.5.53 默认为NULL,即默认禁止导入导出
Mysql<5.5.53 默认为空,即默认无限制
outfile 和 dumpfile的路径不支持hex,必须有引号包裹
7.mysql日志写shell的条件?
与导出函数写Shell相比,规避了 secure_file_priv 的限制
- 网站可访问路径的绝对路径
- mysql服务有对网站可访问路径的写权限
- mysql连接用户有权限开启日志记录和更换日志路径/ROOT权限
- GPC关闭/未对闭合用的引号转义
虽然日志路径可以hex编码,但被记入日志的查询语句中的shell内容需要引号包裹,加\
后传到数据库执行会报错,无法记录进日志
8.disable_functions 怎么绕过?
- 黑名单总有漏网之鱼,多尝试一些函数
- LD_PRELOAD:原理就是劫持系统函数,使程序加载恶意动态链接库文件,从而执行系统命令等敏感操作
- lmageMagick:利用lmageMagick命令执行漏洞(CVE-2016-3714)
- Windows系统组件COM绕过
- PHP7.4 FFI绕过
- 利用Bash破壳(CVE-2014-6271)漏洞绕过
- 利用imap_open()绕过(CVE-2018-19518)
- 利用pcntl插件绕过
9.Mysql有几种提权方式?
【Mysql_UDF 提权】
利用了root高权限,创建带有调用 cmd 的函数的 udf.dll 动态链接库
导出 udf.dll 文件后,我们就可以直接在命令框输入 cmd
限制条件:
- MySQL 数据库没有开启安全模式(确认secure_file_priv=’’是否为空)
- 已知的数据库账号具有对MySQL数据库insert和delete的权限,最好是root最高权限。
- shell有写入到数据库安装目录的权限。
【MOF提权】
基本上在Windows Server 2003的环境下才可以成功。
原理是C:/Windows/system32/wbem/mof/目录下的mof文件每隔几秒钟左右都会被系统执行,因为这个 MOF 里面有一部分是 VBS脚本,所以可以利用这个VBS脚本来调用CMD来执行系统命令,如果 MySQL有权限操作 mof 目录的话,就可以来执行任意命令了。
【反弹端口连接提权】
需要一个root弱密码,并且可以外连
10.报错注入的函数有哪些?
updatexml、extractvalue、floor、exp
拿到webshell不出网情况下怎么办?
reg上传去正向连接。或探测出网协议,如dns,icmp
知不知道脏牛提权漏洞?
Linux内核 >= 2.6.22的内存子系统在处理写入复制时产生了竞争条件(race condition)。
恶意用户可利用此漏洞,来获取高权限,对只读内存映射进行写访问。
利用这一漏洞,攻击者可在其目标系统提升权限,甚至可能获得root权限
sqlmap的–level和–risk的区别?
level级别越高发送的请求越多,并且在level3以上时会尝试对referer注入。
而risk则是风险系数,默认是1会测试大部分的测试语句,2会增加基于事件的测试语句,3会增加OR语句的QL注入测试。
MYSQL 数据库的站,只有一个 80 端口开放?
做了站库分离;更改了端口使3306端口不对外开放。
3389 无法连接是什么情况?
- 没开放 3389 端口
- 端口被修改
- 防护拦截
- 处于内网(需进行端口转发)
上传图片可以正常访问,上传脚本格式访问则403怎么办?
有可能Web服务器配置把上传目录写死了不执行相应脚本,尝试改后缀名绕过。
token和refer横向对比 谁安全等级高?
token安全等级更高,因为并不是任何服务器都可以取得referer,如果从HTTPS 跳到HTTP,也不会发送referer。并且FLASH一些版本中可以自定义referer。
但是token的话,要保证其足够随机且不可泄露。(不可预测性原则)
代码执行、文件读取、命令执行函数有哪些?
建议熟背一下!
1)代码执行:
eval,preg_replace+/e,assert,call_user_func,call_user_func_array,create_function
2)文件读取:
file_get_contents(),highlight_file(),fopen(),readfile(),fread(),fgetss(),fgets(),parse_ini_file(),show_source(),file()等
3)命令执行:
system(), exec(), shell_exec(), passthru() ,pcntl_exec(),popen(),proc_open()
为什么aspx木马权限比asp大?
aspx使用的是.net技术。IIS中默认不支持,ASP只是脚本语言而已。
入侵的时候asp的木马一般是guest权限而APSX的木马一般是users权限。
提权为何选择可读写目录?不用带空格的目录?
因为exp执行多半需要空格界定参数