403Webshell
Server IP : 202.61.199.114  /  Your IP : 216.73.217.139
Web Server : nginx/1.22.1
System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
User : web20 ( 1018)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/share/jailkit/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/share/jailkit/__pycache__/jk_lib.cpython-311.pyc
�

F�c���N�ddlmZddlZddlZddlZddlZddlZddlZddl	Z	dZ
iZd�Zd'd�Z
d'd�Zd�Zd�Zd	�Zd
�Zd�Zd�Zd(d�Zd(d�Zd)d�Zd�Zd*d�Zd�Zd�Zd�Zd*d�Zd'd�Zd'd�Zd*d�Z d+d�Z!ddddddgfd�Z"dddddddgfd�Z#d�Z$d,d �Z%d!�Z&d"�Z'd#�Z(d'd$�Z)d%�Z*d&�Z+dS)-�)�print_functionNi�c�|�t�|d��}|�tj|��xt|<}|S)N)�	statcache�get�os�lstat)�path�rets  �/usr/share/jailkit/jk_lib.py�cachedlstatr0s5���}�}�T�4� � ���K��(�4�.�.�(�)�D�/�C���c�4�	t|��}n<#t$r/|dkr%tj�d|zdz��YdSwxYwtjdd�dkrq|tjdks3|tjt�
d��jkr'tj�d|zd	z��dSnS|tjdks|tjdkr'tj�d|zd
z��dS|tjtj
zs|tjtjzrKt
j|tj��s'tj�d|zdz��dSt
j|tj��s�t
j|tj��rvt#j|��}t't)|��t)|��z��|dd
�dkr'tj�d|zdz��dSn'tj�d|zdz��dSdS)NrzERROR: cannot lstat() �
�������bsd�wheelzERROR: z is not owned by root:wheel!
z is not owned by root:root!
z  is writable by group or others!����zusr/z2 is a symlink, please point to the real directory
���z is not a directory!
�)r�OSError�sys�stderr�write�platform�stat�ST_UID�ST_GID�grp�getgrnam�gr_gid�ST_MODE�S_IWOTH�S_IWGRP�S_ISLNK�S_ISDIRr�readlink�print�str)r	�	failquiet�statbuf�targets    r�path_is_safer.BsW�������'�'�������1�n�n��:���,�T�1�$�6�7�7�7�	�������	�\�"�#�#��%���
�d�k��a���7�4�;�#7�3�<�<��;P�;P�;W�#W�#W��:���I�d�N�#C�C�D�D�D�
�"�$X��d�k��a���7�4�;�#7�1�#<�#<��:���I�d�N�#B�B�C�C�C�
�"�
�d�l��d�l�*��g�d�l�.C�d�l�.R��[_�[g�ho�pt�p|�h}�[~�[~���*���9�T�>�"D�D�E�E�E�	��	
��g�d�l�+�	,�	,�

�
�l�7�4�<�(�)�)�	
��K����6���V���s�4�y�y�	 �!�!�!�
�b�q�b�z�V����J���Y�t�^�$Y�Y�Z�Z�Z�
�2���:���I�d�N�#;�;�<�<�<�
�"�	�s��5A�
Ac��tj�|��}t||��}|dkr|SdD]"}t|dz|zd��}|dkr|cS�#tj�|��}|dkr=t|d��}|dkr|Stj�|��}|dk�=dS)z]tests if path is a safe jail, not writable, no writable /etc/ and /lib, return 1 if all is OKr)�etc�usr�var�bin�dev�proc�sbinr�/rr)rr	�abspathr.�dirname)r	r+�retval�subd�npaths     r�chroot_is_safer=bs���
��������
�t�I�
&�
&���b�[�[�	�-�
>���T���S���
�a�(�(�&��r�k�k�
�=�=�=��	�����	�	��
������a� � �&���k�k�
�=�
�'�/�/�%�
 �
 �%�
	����	
�r
c��t|��}|tjtjtjzzrdSdS)zAreturns 1 if the file is setuid or setgid, returns 0 if it is notrr)rrr#�S_ISUID�S_ISGID)r	r,s  r�test_suid_sgidrAvs6���t�����T�\��d�l�T�\�9�:��	
��	�r
c��tjdd�dkr.t|ddddd���tjd|z��dSdS)N��linuxz/etcr��copy_permissions�
allow_suid�copy_ownershipzldconfig -r )rr�create_parent_pathr�system)�jails r�gen_library_cacherL}sW���\�"�1�"��� � ��T�&�!�a�A�VW�X�X�X�X��)�N�4�� � � � � �!� r
c��g}tjd|zdtjtjtjd���}|j���}t
jdkr+t|t��r|�	dd��}t|��dk�r |���}t|��dk�rv|ddkr|d	d
kr|S|ddkr|dd
kr|ddkr|S|ddks|ddkr�n6t|��dkr|ddkr|ddkr�n	t|��dkrQtj
�|d��r
||dgz
}n�td|dzdz|z��n�t|��d	kr]|dddkrKtj
�|d��r
||dgz
}nNtd|dz��n5td|dd�z��ntd|dd�z��|j���}t
jdkr+t|t��r|�	dd��}t|��dk�� |S)�;returns a list of libraries that the executable depends on �ldd T��shell�stdin�stdoutr�	close_fds��r�utf-8�replacer�
staticallyr�linked�not��dynamicrV�
executablezlinux-gate.so.1zlinux-vdso.so.1r�found�!ldd returns non existing library z for r7�$WARNING: failed to parse ldd output Nr��
subprocess�Popen�PIPErS�readliner�version_info�
isinstance�bytes�decode�len�splitrr	�existsr)�r^r:�p�line�subls     r�lddlist_libraries_linuxrr�s���
����f�Z�'�t�:�?�S]�Sb�ku�kz�GK�L�L�L��	���������v���*�T�5�"9�"9��	
���W�i�	(�	(�$��D�	�	�!���	
�����$�	�$�i�i��k�k��A�w�,���4��7�h�#6�#6��M�	
�a��E�	�	�d�1�g��2�2�t�A�w�,�7N�7N��M�	
�a��%�	%�	%��a��4E�)E�)E��	�T���A���$�q�'�U�*�*�t�A�w�'�/A�/A��	�T���A���
����t�A�w���K���Q��y��V�V�
�.�t�A�w�6�w�>�z�I�J�J�J�J�	�T���A���$�q�'�!�*��+�+�
����t�A�w���8���Q��y��V�V�
�.�t�A�w�6�7�7�7�7�	�
0��c�r�c��
:�;�;�;�;��	/��S�b�S�	�	9�:�:�:�	
��	�	�	�	�$������:�d�E�#:�#:��
�+�+�g�y�
)�
)�4�=	�D�	�	�!���>	�r
c���g}d}tjd|zdtjtjtjd���}|j���}t
jdkr+t|t��r|�	dd��}t|��dk�r�|���}t|��dk�r|d|d	zkr�n(|dd
kr"t|��dkr|dd
krd}n�t|��dkr�|dkrKtj
�|d��r
||dgz
}n�td|dz��n�|dkrKtj
�|d��r
||dgz
}n^td|dz��nEtd��n5td|dd�z��ntd|dd�z��|j���}t
jdkr+t|t��r|�	dd��}t|��dk���|S)rNrVrOTrPrUrWrXr�:�Start���NamerrCr`z1unknown mode, please report this bug in jk_lib.pyraNrrb)r^r:�moderorprqs      r�lddlist_libraries_openbsdrz�sW��
��	����f�Z�'�t�:�?�S]�Sb�ku�kz�GK�L�L�L��	���������v���*�T�5�"9�"9��	
���W�i�	(�	(�$��D�	�	�!���	
�����$�	�$�i�i��k�k��A�w�*�S�.� � ��	
�a��G�	�	��D�	�	�1����a��F�*�*�
�T��	�T���A�����	�	�	�����Q��	 �	 �9���a��	��f�f��/��Q��7�8�8�8�8�
�!�)�)�	�����Q��	 �	 �9���a��	��f�f��/��Q��7�8�8�8�8�
�>�?�?�?�?�	�
0��c�r�c��
:�;�;�;�;��	/��S�b�S�	�	9�:�:�:�	
��	�	�	�	�$������:�d�E�#:�#:��
�+�+�g�y�
)�
)�4�;	�D�	�	�!���<	�r
c��g}tjd|zdtjtjtjd���}|j���}t
jdkr+t|t��r|�	dd��}t|��dk�r�|���}t|��dkr�t|��dkr(|dd	t|��dz�|d
zkrn�t|��dkr|dd
kr|ddkr|St|��dkrKtj
�|d��r
||dgz
}nvtd|dz��n]td|d	d�zdz��n?|d	t|��dz�|d
zkrntd|d	d�zdz��|j���}t
jdkr+t|t��r|�	dd��}t|��dk���|S)rNrOTrPrUrWrXrrNrtrwr\r[rr]r`z%WARNING: failed to parse ldd output "r�"rbrns     r�lddlist_libraries_freebsdr}�s9��
����f�Z�'�t�:�?�S]�Sb�ku�kz�GK�L�L�L��	���������v���*�T�5�"9�"9��	
���W�i�	(�	(�$��D�	�	�!���	
�����$�	�$�i�i��k�k�
�4�y�y�!�|�|��Q�� 2��Z����!2� 2�3�z�#�~�E�E��	�T���A���$�q�'�U�*�*�t�A�w�)�/C�/C��M�	�T���A���
����t�A�w���8���Q��y��V�V�
�.�t�A�w�6�7�7�7�7�	�
1�$�s��s�)�
;�C�
?�@�@�@�@��
�c�*�o�o�a��
� �J�s�N�2�2���	0��c�r�c��	:�3�	>�?�?�?�	
��	�	�	�	�$������:�d�E�#:�#:��
�+�+�g�y�
)�
)�4�+	�D�	�	�!���,	�r
c�z�tjdd�dkrt|��Stjdd�dkrt|��Stjdd�dkrt	|��Stjdd�dkrt|��}|dgz
}|St|��}|gd�z
}|S)	NrCrDrv�openbsd�freebsd�sunosz/lib/ld.so.1)z/usr/libexec/ld.soz/usr/libexec/ld-elf.so.1z/libexec/ld-elf.so.1)rrrrrzr})r^r:s  r�lddlist_librariesr��s����\�"�1�"��� � �	 ��	,�	,�,�
�|�B�Q�B��9�$�$�	"�:�	.�	.�.�
�|�B�Q�B��9�$�$�	"�:�	.�	.�.�
�|�B�Q�B��7�"�"�"�:�.�.�&��^���&�	�-�"�:�.�.�&��T�T�T�T�&�	�-r
�c�P�|dkrdSt|��}d}|s|d}|dd�}d}d}|D�]R}tj�||��}t	|��}tj|j���r|dz
}tj|��}	|	ddkr#tj�	||	z��}��tj�	tj�tj�
|��|	����}
t|��dkrO|
dt|���|kr4tj
�d|
zdz��td���|
}��Ttj�||��S)	Nr7r�rrr�ERROR: symlink � points outside jail, ABORT
�Symlink points outside jail)�
split_pathrr	�joinrrr&�st_moder(�normpathr9rkrrr�	Exception)r	�chroot�include_file�spath�basenamer
�
doscounter�entry�sb�realpath�tmps           r�resolve_realpathr�sy��	�3�Y�Y�	��	�D�	�	����	��
�2�Y�(�
����*�%�
��
�����U�
����S����#��3���"�
�l�2�:���
�
�q�=�:��k�#���8���{�C���
�'�
�
�6�(�?�
+�
+�C�C�
�'�
�
�2�7�<�<������(<�(<�X�F�F�
G�
G�C��F���A�
�
�#�l�s�6�{�{�l�+�V�3�3��Z���'��+�,K�K�L�L�L��2�3�3�3�

�C��
����S��"�"�"r
c��t|��}|rd}|}n>tj�|��}tj�|��}d}|dk�rj|dk�rct|��}t
j|j��r�|dz
}tj	|��}|ddkr||z}|dd�dkr
|dd�}n�tj�
tj�tj�|��|����}	|dkrB|	d|�|kr4tj
�d|	zd	z��td
���|	}nDtj�|��dz|z}tj�|��}d}|dkr|dk��cd|zS)zNwill return the same path that contains not a single symlink directory elementr�rr7�drrNr�r�r�)rkrr	r�r9rrr&r�r(r�r�rrrr�)
r	r�r��	chrootlen�donepath�todopathr�r�r�r�s
          r�OLDresolve_realpathr�&s����v�;�;���#�
�(�
�(�(�
�W�
�
�d�
#�
#�(�
�W�_�_�T�
"�
"�(�
���C���J�#�-�-��8���"�
�l�2�:���(�
��?�:��k�(�#�#�8���{�C����h��H�����
�s�����"��
�X��
�'�
�
�2�7�<�<������(A�(A�(�K�K�
L�
L�C��!����J�Y�J���/�/��Z���'��+�,K�K�L�L�L��2�3�3�3�
�H�H��g���x�(�(��,�X�5�8��g�o�o�h�'�'�8�	�"�'	�C���J�#�-�-�(	�H��r
c��tj|��}tj|tj��}|sL|tjtjzzr0t
d|z��|tjztjz}tj||tj|tj	f��|r6tj
||tj|tj��tj
||��dS)Nz,removing setuid and setgid permissions from )rr�S_IMODEr#r?r@r)�utime�ST_ATIME�ST_MTIME�chownrr�chmod)�src�dst�
be_verboserGrH�sbufrys       r�copy_time_and_permissionsr�Fs���	������	
��T�$�,�'�(�(��	�1�
�d�l�T�\�)�*�1��	7��	;�<�<�<��4�<�-��D�L�=�
0�4���#��T�]�#�T�$�-�%8�9�:�:�:��6��(�3��T�[�!�4���#4�5�5�5���#�t�����r
c���|}tj�|��sV|dksP|dksJtj�|��}tj�|��s|dks|dk�J|S)zsThis function tests if a directory exists, if not tries the parent etc. etc. until it finds a directory that existsr7r�)rr	rmr9)r	r�s  r�!OLDreturn_existing_base_directoryr�[sm�����G�N�N�3��������s�B�w�w�
�������#�
�G�N�N�3��������s�B�w�w��r
rc�T�|}|dd�dkr
|dd�}	t||z|��}tj�|��rdSn#t$rYnwxYwt||z��}t
|��t
|��z
}	|�d|	dz��}
|
dkrt
|��}
|
dk�r�|	dz|
kr|
}	�n�	t|d|
���}nU#t$rH}|j	\}
}tj�d|d|
�zdz|zdz��Yd}~dSd}~wwxYwtj|j���r"tj|d|
���}t||d|
�z|��}|rt#d|zd	z|z��	tj||��nX#t$rK}|j	\}}
|d
krn0tj�d|z|d|
�zdz��Yd}~nd}~wwxYw|ddkrt'||||||���nt)j|d|
�d��}t'||d|dz�|z||||��n�tj|j��r�t||d|
�z|��}|rt#d
|z��tj|t0��|rw	t3|d|
�||||��nZ#t$rM}|j	\}
}tj�d|d|
�zd	z|zdz|zdz��Yd}~nd}~wwxYw|
}	|
t
|��krd}
n.|�d|	dz��}
|
dkrt
|��}
|
dk���dSdS)zucreates the directory and all its parents id needed. copy_ownership can only be used if copy permissions is also usedrNr7r�ERROR: failed to lstat(�):r�Creating symlink � to �z ERROR: failed to create symlink rzCreating directory �2ERROR: failed to copy time/permissions/owner from �: )r�rr	rmr�return_existing_base_directoryrk�findr�argsrrrrr&r�r(r)�symlinkrI�string�rfindr'�mkdir�dir_moder�)r�r	r�rFrGrH�	directory�chrootdirectoryr��oldindx�indxr��e�_�strerror�realfile�
chrootname�errno�indx2s                   r�OLD_create_parent_pathr�bs���
���r�s�s�^�s�������n�)��$�V�I�%5�f�=�=�/��g�n�n�_�%�%�
�	�6�
�������$�����%�f�Y�&6�7�7���s�8�8�C��K�K������s�7�1�9�%�%��	�R�Z�Z�
�9�~�~�$���
�
�
�q�j�D���
�7�7�
�	�Y�u��u�%�	&�	&�B�B��
�
�
�
��&�K�A�x��J���.�y��$��/?�?��D�X�M�d�R�S�S�S�	�E�E�E�E�E�����
�����|�B�J���C��{�9�U�d�U�+�,�,�H�!�&��5�D�5�)9�"9�&�A�A�J��;�
��z�)�&�0��9�:�:�:�Y��Z��*�%�%�%�%���Y�Y�Y���X�U�A�	�"���
�	�j���9�&�@��5�D�5�AQ�Q�RV�V�W�W�W����������Y����	���S������*�6F�
�Tb�c�c�c�c�
�\�)�E�T�E�*�3�
/�
/�U���	�(�5��7�(� 3�H� <�j�JZ�\f�hv�w�w�w�w�	
��b�j�	!�	!�
C�!�&��5�D�5�)9�"9�&�A�A�J��-�
� ��+�,�,�,��H�Z��"�"�"��C�C��	�%�4�%� 0�*�j�*�Vd�e�e�e�e���C�C�C��F�k�a��	�j���K�I�V[�W[�V[�L\�\�]c�c�dn�n�os�s�t|�|�~B�B�C�C�C�C�C�C�C�C�����C�����7�
�C�	�N�N���
�4�4�
�.�.��W�Q�Y�
'�
'�4��R�x�x�	�Y���D�a	
��
�
�
�
�
�
s[�2A�
A�A�C-�-
D?�7=D:�:D?�.G�
H�AH�H�#K?�?
M�	AM�Mc�P�d}d}|D]}|dks|dkr||z
}|dkrd}�d}�|S)Nr�rr7r�)�instring�	outstring�slash�is    r�fix_double_slashesr��sR��
����
���Q��Q�h�h�!�c�'�'���>�9��3�h�h�	
�5�5�	
�5�5��r
c��g}ttj�|����}|dkrX|�dtj�|����tj�|��}|dk�X|S)Nr7r)r�rr	r��insertr�r9)r	r
�nexts   rr�r��sv��	�����)�)�$�/�/�0�0�������*�*�Q�r�w����%�%�&�&�&�	�w���t���$�	
����	�r
c�N�t|��dkrdSd}|D]
}|d|zz
}�|S)Nrr7r�)rk)r�r
r�s   r�	join_pathr��s?����Z�Z��]�]�	��	�����U���U���#�#��r
c�n�t|��}|}d}|t|��kr�tj�|||��}	tj�|	��snKt
|	|d��}
tj�|
��sn|
}|dz
}|t|��k��|t|��k�r�t|d|dz���}tj�|||��}	t|��}
nM#t$r@}|j
\}}tj�
d|zdz|zdz��Yd}~dSd}~wwxYwtj|
j��r�|rt#d|z��tj|t&��|r�	t)|||||���n�#t$r]}|j
\}}tj�
dt*dt,�zdzt.zd	z|zdz��Yd}~�nod}~wwxYw�netj|
j���rKtj|��}|rt#d
|zdz|z��tj||��|ddkrt7||||||��}n�tj�tj�tj�|��|����}
t|��dkrO|
dt|���|kr4tj�
d|
zd
z��t=d���|
t|��d�}t7||||||��}|}|dz
}|t|��k���|S)Nrrr�r�rzCreate directory r�r�r�r�r7r�r�r�)r�rkrr	r�rmr�r�rrr�rrrrr'r�r)r�r�r�r�r�r�r&r(r�rIr�r9r�)r�r	r�rFrGrHr��	existpathr��tmp1r��origpath�jailpathr�r�r�r�r�s                  rrIrI�s���
�D�	�	��
����	�#�e�*�*���	����i��a��	)�	)�$�	�����	�	�	����f�Q�'�'�#�	�����	�	�	���)��Q�$�!�	
�#�e�*�*���	
�#�e�*�*���
�u�Q�q��s�U�|�
$�
$�(�
�W�\�\�)�E�!�H�
-�
-�(���H���2�2��	������;�1�h��:���-�h�6�t�;�H�D�T�I�J�J�J�
�$�$�$�$�$����������l�2�:���m��(�	�
�h�
&�'�'�'��8�H�h�����B�B��x��:�z�>�Z�Z�Z�Z���B�B�B��6�[�Q���Z���J�9�UZ�VZ�UZ�K[�[�\b�b�cm�m�nr�r�s{�{�}A�A�B�B�B�B�B�B�B�B�����B����B�	
��R�Z� � �m��k�(�#�#�8��8�	�
�h�
&�v�
-�h�
6�7�7�7��:�h�x� � � ���{�C���!�&�(�:�?O�Q[�]k�l�l�H�H�
�'�
�
�2�7�<�<������(A�(A�(�K�K�
L�
L�C��F���A�
�
�#�l�s�6�{�{�l�+�V�3�3��Z���'��+�,K�K�L�L�L��2�3�3�3��3�v�;�;�<�<� �H�!�&�(�:�?O�Q[�]k�l�l�H��)��Q�$�!�K	
�#�e�*�*���L	�s1�
D�
E'�'5E"�"E'�4G	�	
H0�AH+�+H0c	�Z�	|rtd|z��tj|��t|||dd���nZ#tt
f$rF}|j\}}tj�	d|zdz|zdz|zdz��Yd}~dSd}~wwxYwtj
|��D]�\}}}|D]�}	|r$td	|zd
z|	zdz|zd
z|	z��	tj|d
z|	z|d
z|	z��t|d
z|	z|d
z|	z|dd����k#tt
f$rT}|j\}}tj�	d|zd
z|	zdz|zd
z|	zdz|zdz��Yd}~dSd}~wwxYw|D]}	t|d
z|	z|d
z|	z|��� ��dS)NzCreating directoryrr�rGrHz)ERROR: copying directory and permissions r�r�r�Copying r7�$ERROR: copying file and permissions )r)rr�r��IOErrorrr�rrr�walk�shutil�copyfile�#move_dir_with_permissions_and_owner)
�srcdir�dstdirr�r�r�r��root�dirs�files�names
          r�#copy_dir_with_permissions_and_ownerr�sT����&��	�f�	$�%�%�%��(�6�����F�F�J�1�UV�W�W�W�W�W��	�'�������+�!�X��*���>�v�E�f�L�V�S�TX�X�Ya�a�bf�f�g�g�g�	
���������������'�&�/�/�Q�Q��T�4���	
�	
�d��;�	�*�T�/�#�
�d�
"�6�
)�&�
0��
4�T�
9�:�:�:�
�
�O�D��H�T�M�&��*�T�/�2�2�2��d�3�h�t�m�V�C�Z��_�j�UV�gh�i�i�i�i�i���7�
�
�
�
��&�K�A�x��J���;�D�@��D�T�I�&�P�QW�W�X[�[�\`�`�ae�e�fn�n�os�s�t�t�t��1�1�1�1�1�1�1�����
�����Q�Q�d�&�t�C�x��}�V�C�Z��_�Z�P�P�P�P�Q�	�s/�<?�B�;B�B�AD � F�1AF�Fc�j�t|||��}|dkr�|dkrtd|z��	tj|��dS#tt
f$r@}|j\}}tj�	d|zdz|zdz��Yd}~dSd}~wwxYwtd|zdz|z��dS)Nrz!Removing original home directory zERROR: failed to remove r�rzNot everything was copied to z, keeping the old directory )
r�r)r��rmtreerr�r�rrr)r�r�r�r:r�r�r�s       rr�r�s���
-�f�V�J�
G�
G���q�[�[��!�m�m��	,�V�	3�4�4�4�J�	�=��������
�7�	�J�J�J���;�1�h��:���.�v�5�d�:�8�C�D�H�I�I�I�I�I�I�I�I�I�����J�����'��.�/M�M�f�T�U�U�U�U�Us�A�B�5B�Bc��d}|dkr;	tj||��d}n"#td|zdz|zdz��YnxYw|dkr�	tj||��t|||||���d
S#ttf$rF}|j\}}	tj
�d|zdz|zdz|	zd	z��Yd
}~d
Sd
}~wwxYwd
S)zXcopies/links the file and the permissions (and possibly ownership and setuid/setgid bitsrrzLinking r�z failed, will revert to copyingr�r�r�rN)r�linkr)r�r�r�r�rr�rrr)
r�r�r��try_hardlinkrG�retain_owner�do_normal_copyr�r�r�s
          r�copy_with_permissionsr�)s$�����1�_�_���7�3�s�����>�>�����C���	�s�	"�#D�	D�E�E�E��4�����q���^�	�?�3�s�����S�#�z�j�Ye�f�f�f�f�f�f��
�7�	�^�^�^���;�1�h��:���:�3�>�v�E�c�I�$�N�x�W�X\�\�]�]�]�]�]�]�]�]�]�����^����	�s!�"�A�)A6�6C
�;C�C
c�x�t|tj�|��|ddd���t	||z|��}tj�|��rt
d|zdz��dStj|��}	tj	dd�dkr|j
dz}|j
dz}n^tj	d	kr:tjd
kr|j
dz}|j
dz}n)|j
d
z}|j
d
z}n|j
dz}|j
dz}tj|j
��rd}n3tj|j
��rd
}nt
d|zdz��dS|dkrt
d|z|z��tjtjdd|t#|��t#|��t#|����}	t%||d|���dS#t
d|zdz��t
d|zdz��t
d|zdz��t
d��YdSxYw)NrrrEzDevice z does exist alreadyrCrD��sunos5i���i�c�bz	WARNING, z# is not a character or block devicezCreating device �mknodr�zFailed to create device z(, this is a know problem with python 2.1zuse "ls -l z6" to find out the mode, major and minor for the devicezuse "mknod z' mode major minor" to create the devicez<use chmod and chown to set the permissions as found by ls -l)rIrr	r9r�rmr)rrr�st_rdev�maxint�S_ISCHRr��S_ISBLK�spawnlp�P_WAITr*r�)
r�r	r�r��
chrootpathr��major�minorryr
s
          r�copy_devicer�;sS���F�2�7�?�?�4�0�0�*�q�]^�op�q�q�q�q��v�d�{�6�2�2���W�^�^�J���	��	�*��2�2�3�3�3��&��g�d�m�m��H�	�l�2�A�2��'�!�!�
�:���5�
�:���5�5���� � �
�z�Z����J�&� �E��J���E�E�
�J�*�$�E�
�Z�*�
$�E�E�
�:���5�
�:���5�
�l�2�:����

�4�4���R�Z� � ��

�4�4���T�	�?�	?�@�@�@�
�!��!�m�m��	�F�	"�4�	'�(�(�(�
�
�2�9�g�g�z�3�t�9�9�c�%�j�j�RU�V[�R\�R\�]�]�#��D�*��<�X�X�X�X�X�X��H��"�:�-�.X�X�Y�Y�Y��
�d��S�S�T�T�T��
�j� �!J�J�K�K�K��F�G�G�G�G�G�G���s�CG&�+A9G&�&AH9c	�(�d}	tj|��D]�}
tj�||
��}	t	|��}tj|j��r-t|||d||���t|||||||||�	�	}n$|	tj�||
��fz
}	��#t$r:}
tj�
d|zdz|
jzdz��Yd}
~
��d}
~
wwxYwt||	|||||||�	�	}|S)zbcopies a directory and the permissions recursively, possibly with ownership and setuid/setgid bitsr�r)r�rFrGrH�)ERROR: failed to investigate source file r�rN)r�listdirr	r�rrr'r�rI�copy_dir_recursiverrrrr��copy_binaries_and_libs)r��dir�force_overwriter��
check_libsr�rGr��handledfiles�files2r�r�r�r�s              rrrcsn��
���j��o�o�
Z�
Z�U�
����S�%� � �#�Z�
�c�
�
�4��|�D�L�!�!�(��v�s�z�A�Zd�vB�C�C�C�C�%�f�S��*�j�Zf�hr�uA�CO�P�P�L�L�
�b�g�l�l�3��&�&�'�'�F���	�Z�Z�Z��:���?��C�D�H���S�TX�X�Y�Y�Y�Y�Y�Y�Y�Y�����Z����&�v�f�_�j�R\�^j�lv�yE�GS�T�T���s�A9B4�4
C8�>0C3�3C8c

���|ddkr
|dd�}|D�]K}
|
|	vr�	t|
��}n�#t$r�}|jdkrv|dkrXtj|
��}
t	|
��dkrt||
|||||d|	��	�	}	n`|rt
d|
zd	z��nH|rt
d
|
zdz��n0tj�	d|
zd
z|j
zdz��Yd}~��d}~wwxYwt|tj
�|
��|d||���ttj
�|dz|
z��|��}	t|��}d}nX#t$rK}|jdkrd}n3tj�	d|z|
zd
z|j
zdz��Yd}~nd}~wwxYw|dkr4|r2t#j|j��s|rt
d|zdz�����|r�|r�t#j|j��rz|rt
d|zdz��	tj|��n�#t$r@}tj�	d|zd
z|j
zdz|zdz��Yd}~njd}~wwxYwt#j|j��rt
d|zdz��n3t#j|j��rn|rt
d|zdz�����t|tj
�|
��|d||���t#j|j���rdtj|
��}|rz|rt
d|zdz��	tj|��nM#t$r@}tj�	d|zd
z|j
zdz|zdz��Yd}~nd}~wwxYw	t
d|zdz|z��tj||��n#t$rYnwxYw|	�|
��|ddkrZtj
�tj
�tj
�|
��|����}t||g|||||||	�	�	}	�nt#j|j��rt7||
|||||||	�	�	}	n�t#j|j��r]|rt
d|
zdz|z��nt
d|
zdz|z��t9|
|||||��|	�|
��njt#j|j��st#j|j��rt?||
||��n%tj�	d|
zdz��t#j |t"j!��}|r�|
�"d ��dksB|
�"d!��dks)|t"j#t"j$zt"j%zzr%tM|
��}t||||d||	�"��}	��M|	S)#z>copies a list of executables and their libraries to the chrootrr7Nr\rr)r�r��try_glob_matchingrzSource file(s) z
 do not existzSource file z does not existrr�rrEz.ERROR: failed to investigate destination file r�z" already exists, will not touch itzDestination file z$ exists, will delete to force updatezERROR: failed to delete z
cannot force update zDestination dir z existszDestination symlink r�r�zTrying to link r�zFailed to find how to copy z= into a chroot jail, please report to the Jailkit developers
�libz.so)r)'rrr��globrkrr)rrrr�rIrr	r9r�r�rr'r��S_ISREG�unlinkr&r(r��appendr�rr�r�r�r�r�r#r��S_IXUSR�S_IXGRP�S_IXOTHr�)r��binarieslistrr�rr�rGr�rr�filer�r�r
�chrootrfile�chrootsb�chrootfile_existsr�ry�libss                    rrr�s����B�Z�3����#�2�#�;�&�
�aA�aA�T�
�l������D���2�2��	�����w�!�|�|��Q����9�T�?�?�S�	�S���!���+�F�C��*�V`�o{�KW�kl�{G�H�H�H�l�l��4���d�"�?�2�3�3�3��
�2�
�>�$��0�0�1�1�1���J���@��E�d�J�1�:�U�VZ�Z�[�[�[��8�8�8�8����������V�B�G�O�O�D�1�1�:�PQ�^h�zF�G�G�G�G� ���!1�!1�&��*�T�/�!B�!B�6�J�J�+�h��+�&�&�8�����	�h�h�h��w�!�|�|�����J���E�f�L�T�Q�RV�V�WX�Wa�a�bf�f�g�g�g����������	h�����!���!2��4�<��HX�;Y�;Y���?�	�"�[�.�=�
=�>�>�>������	
��h�&�	'�	'�
6�
�U��
 ��
,�-S�
S�T�T�T�z�	�y�������
�z�z�z�
�z���2�;�>�t�C�A�J�N�Og�g�hs�s�tx�x�y�y�y�y�y�y�y�y�����z�����<��(�)�)�6���{�*�9�4�5�5�5��	
��h�&�	'�	'��
��8��
 ��
,�Y�
6�7�7�7���f�R�W�_�_�T�2�2�J�QR�_i�{G�H�H�H�H��|�B�J��� z��{�4� � �H��y�	�W��"�;�.�/U�U�V�V�V�y��i��������y�y�y�	�j���1�+�=�d�B�1�:�M�Nf�f�gr�r�sw�w�x�x�x�x�x�x�x�x�����y����
�
��{�*�6�1�(�:�;�;�;��Z��+�&�&�&�&���
�
�
�
�T�
��������������s����� � �����b�g�o�o�d�.C�.C�H�!M�!M�N�N�X�)�&�8�*�o�z�[e�gs�u�BN�P\�]�]�L�L�	
��b�j�	!�	!�z�%�f�T�/�:�z�[g�is�vB�DP�Q�Q�L�L�	
��b�j�	!�	!�
z��/�
��T�!�&�(��4�5�5�5�5�
�:�d�?�6�!�+�-�.�.�.��$�{�:�|�Z�Q]�^�^�^���������	
��b�j�	!�	!�z�T�\�"�*�%=�%=�z����j�,�7�7�7�7��J���2�4�7�8x�x�y�y�y��,�r�$�,�'�
(�
(�4��A�t�y�y��'�'�2�-�-����5�1A�1A�R�1G�1G�D�TX�T`�cg�co�To�rv�r~�T~�L�1G��T�"�"�D�)�&�$���UV�Xd�s�A�A�A�L���sp�2�
C7�B1C2�2C7� E2�2
G�<AG�G�9I�
J�6J�J�7N�
O�6O�O�-P�
P�Pc���g}|�||��rF|�||��}|�d��D]}||���gz
}�|S)z�retrieves a comma separated option from the configparser and splits it into a list, returning an empty list if it does not exist�,)�
has_optionrrl�strip)�	cfgparser�sectionname�
optionnamer:�inputstrr�s      r�config_get_option_as_listr"�sh��
�����+�j�1�1��
�]�]�;�z�
2�
2�(�
�^�^�C�
 �
 ���c�	�c�i�i�k�k�]��6�6��r
�ERRORc��td��t|dz|z��|��tj|��dS)Nr�r�)r)r�exit)�exitno�message�	usagefunc�types    r�
clean_exitr*�sE���r�����t�D�y������
�������&�����r
c�V�	t|d��}n#YdSxYw|���}tjdkr+t	|t
��r|�dd��}t|��dkr�|�d��}t|��|kr"|||kr|�	��dS|���}tjdkr+t	|t
��r|�dd��}t|��dk��dS)N�rrrUrWrXrtr)
�openrfrrgrhrirjrkrl�close)�item�num�filename�fdrp�pwstructs      r�test_numitem_existr4�s	����H�S���"�"���	
������
���
�
����v���*�T�5�"9�"9��	
���W�i�	(�	(�$��D�	�	�!���
�Z�Z��_�_�(�	�(�m�m�c���h�s�m�t�3�3��8�8�:�:�:�
�!�	�����$������:�d�E�#:�#:��
�+�+�g�y�
)�
)�4�	�D�	�	�!���	
�s��c�$�t|d|��S�Nr�r4)�user�
passwdfiles  r�test_user_existr:s���4��*�-�-�-r
c�$�t|d|��Sr6r7)�group�	groupfiles  r�test_group_existr>s���5��9�-�-�-r
c�p�|ddkr
|dd�}t|d|ddd���tjdd�dkr�t|d	zd
�����t|dzd
�����t|dzd
�����t|d
zd
������nyt
j�|d	z��st|d	zd��}�n�t|d	zd��}|���}tj	dkr+t|t��r|�dd��}t|��dk�r|�d��}t|��dkr�|d|vs
|d|vr}|r!td|dzdz|zd	z��	|�|d��n#t"$rYnwxYw	|�|d��n#t"$rYnwxYw|���}tj	dkr+t|t��r|�dd��}t|��dk��|�dd��t|��dk�rrtd	d��}|���}tj	dkr+t|t��r|�dd��}t|��dkr�|�d��}t|��dkrb|d|vs
|d|vrN|�|��|r!td|dzdz|zd	z��|d|vr||dgz
}|���}tj	dkr+t|t��r|�dd��}t|��dk��|���|���t
j�|dz��st|dzd��}�n�t|dzd��}|���}tj	dkr+t|t��r|�dd��}t|��dk�r|�d��}t|��dkr�|d|vs
|d|vr}|r!td|dzdz|zdz��	|�|d��n#t"$rYnwxYw	|�|d��n#t"$rYnwxYw|���}tj	dkr+t|t��r|�dd��}t|��dk��|�dd��t|��dk�r\tdd��}|���}tj	dkr+t|t��r|�dd��}t|��dkr�|�d��}t|��dkrL|d|vs
|d|vr8|�|��|r!td|dzdz|zdz��|���}tj	dkr+t|t��r|�dd��}t|��dk��|���|���dS)Nrr7z/etc/rrErrvrz/etc/passwd�az/etc/spwd.dbz/etc/pwd.dbz/etc/master.passwd�wzr+rUrWrXrtrVr\zuser z exists in r,z
writing user r�z
/etc/groupzgroup zwriting group )rIrrr-r.rr	�isfilerfrgrhrirjrkrlr)�remove�
ValueError�seekr)	r��users�groupsr��fd2rpr3r2�groupstructs	         r�init_passwd_and_grouprJsT���B�Z�3����#�2�#�;�&��F�7�J��q�ab�c�c�c�c��\�!�A�#��%����v�m��C� � �&�&�(�(�(��v�n��S�!�!�'�'�)�)�)��v�m��C� � �&�&�(�(�(��v�"�"�3�'�'�-�-�/�/�/�/�
�'�.�.��
�-�
.�
.��	
�f�]�"�3�	'�	'�3�3�
�f�]�"�4�	(�	(�3�

�,�,�.�.�4�	�����J�t�U�$;�$;���;�;�w�	�*�*�D�

�d�)�)�A�+�+��z�z�#���H��H�
�
����
�1�+��
�
�H�Q�K�5�$8�$8�
�E��W�X�a�[�
 ��
.�v�
5�m�
C�D�D�D���|�|�H�Q�K� � � � ��
�����t�������|�|�H�Q�K� � � � ��
�����t������<�<�>�>�D�
��&� � �Z��e�%<�%<� ��K�K���+�+�T�!�d�)�)�A�+�+�"�8�8�A�a�=�=�=�	�%�j�j�1�n�n��]�3���2�
�+�+�-�-�4�	�����J�t�U�$;�$;���;�;�w�	�*�*�D�

�d�)�)�A�+�+��z�z�#���H��H�
�
����
�1�+��
�
�H�Q�K�5�$8�$8�	�i�i��o�o�o�
�F��_�X�a�[�
(��
/��
6�}�
D�E�E�E��q�k�V�#�#�
�(�1�+���v�
�;�;�=�=�D�
��&� � �Z��e�%<�%<� ��K�K���+�+�T��d�)�)�A�+�+��8�8�:�:�:��)�)�+�+�+�	�����|�+�	,�	,���V�L�
 ��%�%�#�#��V�L�
 ��&�&�#�	�����$������:�d�E�#:�#:��
�+�+�g�y�
)�
)�4�	�T���1������C���;�
�;���!���	�Q��6�	!�	!�{�1�~��'?�'?�	�G��H�[��^�#�M�1�&�8��E�F�F�F���m�m�K��N�#�#�#�#������
�d�������m�m�K��N�#�#�#�#������
�d�����

�,�,�.�.�4�	�����J�t�U�$;�$;���;�;�w�	�*�*�D�!

�T���1���"�(�(�1�Q�-�-�-���[�[�1�_�_��L����"�	�����$������:�d�E�#:�#:��
�+�+�g�y�
)�
)�4�	�T���1������C���;�
�;���!���	�Q��6�	!�	!�{�1�~��'?�'?��Y�Y�t�_�_�_�	�H���[��^�+�F�2�6�9�,�F�G�G�G�
�+�+�-�-�4�	�����J�t�U�$;�$;���;�;�w�	�*�*�D�

�T���1����(�(�*�*�*��������sH�'H�
H�H�H0�0
H=�<H=� U<�<
V	�V	�
V)�)
V6�5V6c�"�tjd��}|�d��}|D]b}tj�||��}tj�|��r!tj�|��cS�cdS)N�PATHrt)r�getenvrlr	r�rmr8)r1�search_path�pathsr	�joineds     r�find_file_in_pathrQxs����y�� � ��	�	�	�3�	�	��
�"�"�T�
�7�<�<��h�'�'�&��W�^�^�F���"�
�'�/�/�&�
!�
!�!�!�!�"��r
c��g}|D]J}|ddkr|�|���$t|��}|r|�|���K|S)Nrr7)rrQ)rO�paths2r��tmp2s    r�find_files_in_pathrU�se��
�����S�	�!�f��m�m�	�=�=������
�C�
 �
 �4���
�M�M�$������r
)r)r�r)rrr)rrrr)rr)r#),�
__future__r�os.pathrr�rrr�r
rcr�rrr.r=rArLrrrzr}r�r�r�r�r�r�r�r�r�rIr�r�r�r�rrr"r*r4r:r>rJrQrUr�r
r�<module>rXs��@&�%�%�%�%�%�����
�
�
�
�
�
�
�
�����
�
�
�
������������	����$
�
�
�
�@
�
�
�
�(
�
�
�!�!�!�(�(�(�T(�(�(�T���B��� #�#�#�#�<����@����*���B�B�B�B�H
�
�
�������<�<�<�<�|
�
�
�
�6V�V�V�V�^�^�^�^�$&H�&H�&H�&H�P34��a�^_�lm�|}�MO�����BBC�q�]^�mn�{|�LM�ab�qs�f�f�f�f�P�������
�
�
�(.�.�.�.�.�.�a
�a
�a
�a
�F
�
�
�	�	�	�	�	r

Youez - 2016 - github.com/yon3zu
LinuXploit