墨者在线靶场-SQL注入漏洞测试(参数加密)
之前面试有出过一个这个类似的,现在复现一下
访问链接,发现一个登陆页面
先用dirsearch扫一下
挨个查看,最后发现news目录下的东西有些可疑
下载zip文件,可以看到list.php的源码
主要看php里的内容就好了,主要意思就是,list.php通过get请求获取一个id,并对其进行decodedecode函数里的内容就是,将参数data经过两次base64解密,然后经过mdecrypt_generic函数操作(通过英文可以大概知道是用来解密的函数),如果后六位是_mozhe就会返回除去 _mozhe的剩余部分,也就是接入sql语句。
目的也就明确了,就是sql盲注嘛,首先要搞清楚mcrypt_generic_init中几个参数的含义(应该就是对应的加密规则)
aes在线工具:AES加密、AES解密 - 在线工具 - OKTools
通过搜索发现是使用的AES加密,ydhaqPQnexoaDuW3是密钥,2018201920202021是参数。那么我们就先使用1_mozhe进行测试去进行aes加密+base64加密(这里使用的工具结果是经过一次base64加密的), ...
windows 隐藏账户排查
首先创建隐藏账户
此时使用net user并不能发现用户admin$
将admin$用户加入administrators组,使用命令net localgroup administrators admin$ /add
此时admin$用net user是查看不到的,但查看用户和组的时候还是可以看到
1查看命令:net localgroup administrators admin$ /add
所以需要修改注册表,win+r输入regedit进入注册表
进入到以下目录HKEY_LOCAL_MACHINE/SAM/SAM
右击,将权限转交给administrator
此时可以看到admin$,并发现其类型为0x3e9
,而administrator的类型为0x1f4
将admin$,000003E9,000001F4导出
将1f4中的F值复制给3e9
复制完之后,就回去把admin$给删掉,命令net user admin$ /del
然后回到注册表,将admin.reg 和 admin3e9.reg导入
导入成功
然后回去,将赋予administr ...
盲注快速获取数据
前段时间参加面试,面试官有问过一个问题,SQL注入中盲注如何快速获取数据。当时没有反应过来,后来百度了才发现,这不就是盲注使用dnslog外带数据么,尘封的记忆一下子就回想起来了,那是一个月黑风高的夜晚……咳咳,扯远了,总之就是没答上来,复盘吧!
环境复现我们使用sql-labs进行还原盲注的情形,就用Less-9吧
可以看到经过简单的注入点测试,发现页面上的东西不会发生改变
但是当payload为请求时间大概为6.02秒,说明存在注入点
此时我们需要一个dns平台,就使用ceye平台自带的吧 http://ceye.io/
或者是其他dns平台,比如dnslog
这两个这里都会演示一下
dnslog外带条件要使用dnslog外带首先需要满足几个条件:
1.首先要将secure_file_priv改为‘’
修改步骤:1.使用show variables like ‘%secure%’
2.进入MYSQL文件夹下,打开my.ini文件
3.在my.ini中,添加或修改为secure_file_priv=””
2,只适用于Windo ...
SUID提权
接上文sudo滥用提权,今天我们来学习suid提权
SUIDsuid是一种特殊的文件属性,它允许用户执行的文件以该文件的拥有者的身份运行
这里就不得不再提一次关于Linux文件权限的理解:
Linux中每个文件和目录都有九位基础权限位,每三位组成一组分别为:文件类型,属主用户权限位,用户组权限位,其它用户权限
类似这样:drwxrwxrwx(加粗部分,第一位d为目录文件),其中
r为可读权限,对应数字4
w为可写权限,对应数字2
x为可执行权限,对应数字1
若没有以上权限则可用-代替,对应数字0
接下来就是我们今天要讲的suid位,当s出现在属主权限位的x权限位上时,就被称为Set UID 简称SUID
suid s对应数字4
s出现在属主权限x位上的作用:
1.SUID权限仅对二进制程序有效
2.执行者对于该文件需要有x(运行)权限
3.本权限仅在程序运行过程中有效
4.执行者将拥有文件所有者的权限
所以SUID提权的思路就是我们运行root用户所拥有的文件,那么我们运行该文件的时候就拥有root权限了,有点相似sudo滥用提权,都是利用拥有root权限的命令/ ...
利用passwd提权
初步整理完关于sudo滥用提权,开始整理一下关于配置错误/etc/passwd的利用
sudo滥用和这篇文章都参考这个大佬的: Linux提权方法总结_linux如何提权_山山而川’的博客-CSDN博客
1.先决条件及环境搭建要当前用户对/etc/passwd文件具有写的权限,找个靶机实验一下
ls -l /etc/passwd查看一下当前权限,说明已经修改为所有用户都具有w即写的权限
接下来我们就看一下/etc/passwd中所表示的信息,以下面的语句为例:
1root:x:0:0:root:/root:/bin/bash
root为登录用户名 x为密码(加过密的) 0为用户UID 0为用户组id GID root为用户备注信息 /root为用户home目录 /bin/bash用户默认的bash
因此我们需要的就是对/etc/passwd进行写入
我们要构造一个用户,密码为我们设定的密码(带盐值),并且UID设置为0
使用命令
1perl -le ...
sudo滥用提权
上次复现并学习了脏牛提权,这次再整理一下sudo滥用提权的相关内容
关于sudosudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的工具如halt,reboot,su等等。
要想使一个用户具有使用sudo的能力,需要root用户将其名字,所能执行的命令,按照哪种用户或用户组的身份执行等信息注册到/etc/sudoers中
关于sudoers
sudoers文件主要有三部分组成:
sudoers的默认配置(default) 主要设置sudo的一些缺省值
alias(别名),主要有Host_Alias|Runas_Alias|User_Alias|Dmnd_Alias
安全策略(规则定义)
语法:1root ALL=(ALL) ALL
解释:root用户可以从 ALL(任意)终端作为ALL(任意)用户执行ALL(任意)命令
即 用户 终端 可充当的用户 使用时可以运行的命令
12root ALL=(ALL:ALL) ALLhacker ALL=(ALL:ALL) ALL
解释:root这一句与上面不同的就是root用户可以从 ALL(任意)终端 ...
『vulnhub系列』脏牛提权
复习Linux提权的相关知识,学到脏牛提权,正好有个vulnhub靶机可以用来练手,一起来试一下!
环境搭建靶机下载:Lampião: 1 ~ VulnHub
使用Vmware打开靶机:
看来需要密码,先进行信息搜集
信息搜集使用nmap -sn xxx.0/24查找同一网段的主机,-sn是只扫描主机不扫描端口的意思
找到一个可疑IP192.168.117.126使用nmap -p- xxx扫描对应IP的端口,发现有22 ,80,1898三个端口
是同浏览器访问1898端口得到以下界面
发现使用框架Drupal
使用dirsearch -u [url]来进行敏感了目录扫描(当时没有仔细看敏感目录有什么,直接去找Drupal的漏洞去了)
使用msfconsole打开metasploit
在CHANGELOG.txt中发现Drupal的版本为7.54 更新时间为2017年
直接在msf中使用search Drupal命令搜索相关的漏洞,有一个18年的就用它了
漏洞利用使用use 1进行漏洞利用,show options查看需要的配置
只需要设置RHOST和RPORT ...
JNDI注入重置版
大概理解了RMI的原理,现在开始重新学习一下JNDI注入
一、JNDI机制与原理名称:JNDI(Java Naming and Directory Interface,Java命名和目录接口)
概述:JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。目录服务是命名服务的一种自然扩展。
在Java JDK里面提供了5个包,提供给JNDI的功能实现,分别是:
javax.naming:主要用于命名操作,它包含了命名服务的类和接口,该包定义了Context接口和InitialContext类; javax.naming.directory:主要用于目录操作,它定义了DirContext接口和InitialDir- Context类;javax.naming.event:在命名 ...
Java RMI
先前介绍过RMI但感觉不够详细所,理解也不够透彻,想着这次再学习一下,当然,此篇文章仅供个人理解,因此会借鉴大神们的文章,文末会有标出。
一、Java RMI机制与原理 RMI(Remote Method invocation)远程方法调用:是允许在一个JAVA虚拟机中运行的对象调用运行在另一个JAVA虚拟机中的对象的方法
(ps:两个虚拟机可以是运行在相同计算机的不同进程中,也可以是运行在网络上的不同计算机中)
而JAVA RMI:用于实现远程过程调用的应用程序编程接口。它使客户机上的程序可以调用远程服务器上的对象的引用
RMI过程:服务器调用远程注册表将名称与远程对象关联
客户端在注册表中通过名称查找远程对象,然后在其上调用一个方法
要了解RMI就不得不提到两个概念
Stub和Skeletonrmi框架使用代理来负责代理与远程对象通过socket进行通信的细节
客户端代理stub(存根)服务器代理skeleton(骨架)
RMI远程调用步骤:1.客户调用方法
2.经过stub代理打包(编码)调用信息(变量,方法名)通过网络发给skeleton
3.服务器端通过skelet ...